I hate web audio

This commit is contained in:
Maikiwi 2022-03-18 22:54:10 -07:00
parent b481977779
commit 12815f954a
5 changed files with 38 additions and 37 deletions

View file

@ -64,36 +64,37 @@ const CiderAudio = {
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);
}, },
spatialProfiles: [
{
"id": "420signature",
"file": './audio/impulses/CiderSpatial_v69.420_Audiophile.wav',
},
{
"id": "standard",
"file": './audio/impulses/CiderSpatial_v69_Standard.wav',
},
{
"id": "audiophile",
"file": './audio/impulses/CiderSpatial_v69_Audiophile.wav'
}
],
spatialOn: function (){ spatialOn: function (){
CiderAudio.audioNodes.spatialNode = null; CiderAudio.audioNodes.spatialNode = null;
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.spatialNode.normalize = true; CiderAudio.audioNodes.spatialNode.normalize = false;
switch (app.cfg.audio.maikiwiAudio.spatialType) {
case 0: let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
fetch('./audio/impulses/CiderSpatial_v69_Standard.wav').then(async (impulseData) => { return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
let bufferedImpulse = await impulseData.arrayBuffer(); });
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
if (spatialProfile === undefined) {
}); spatialProfile = CiderAudio.spatialProfiles[0];
break; }
case 1: fetch(spatialProfile.file).then(async (impulseData) => {
fetch('./audio/impulses/CiderSpatial_v69_Audiophile.wav').then(async (impulseData) => { let bufferedImpulse = await impulseData.arrayBuffer();
let bufferedImpulse = await impulseData.arrayBuffer(); CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);});
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
break;
default:
fetch('./audio/impulses/CiderSpatial_v69_Standard.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
app.cfg.audio.maikiwiAudio.spatialType = 0;
break;
}
} }
else { else {
CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context); CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context);

View file

@ -90,12 +90,12 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.spatialType === 0" v-model="app.cfg.audio.maikiwiAudio.spatialType" onclick="app.cfg.audio.maikiwiAudio.spatialType = 0"> <select class="md-select" style="width:180px;" v-model="app.cfg.audio.maikiwiAudio.spatialProfile"
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard')}} v-on:change="toggleMaikiwiSpatial">
</button> <option value="420signature">Signature</option>
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.spatialType === 1" v-model="app.cfg.audio.maikiwiAudio.spatialType" onclick="app.cfg.audio.maikiwiAudio.spatialType = 1"> <option value="audiophile">Expansive</option>
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile')}} <option value="standard">Minimal</option>
</button> </select>
</div> </div>
</div> </div>
<div style="opacity: 0.5; pointer-events: none"> <div style="opacity: 0.5; pointer-events: none">
@ -180,13 +180,13 @@
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.spatialOn() CiderAudio.spatialOn()
CiderAudio.hierarchical_loading(); CiderAudio.hierarchical_loading();
let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) + 12) / 20)); //let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) - 14) / 20));
if (normalized > 1.0) {app.mk.volume = 1} //app.mk.volume = normalized
else {app.mk.volume = normalized} // -13dBFS Target
} }
else { else {
let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) - 12) / 20)); //let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) + 14) / 20));
app.mk.volume = normalized //app.mk.volume = normalized
CiderAudio.spatialOn() CiderAudio.spatialOn()
CiderAudio.hierarchical_loading(); CiderAudio.hierarchical_loading();
} }