audiocontext toggle

This commit is contained in:
vapormusic 2021-12-30 11:50:42 +07:00
parent 7072ccc30c
commit a256a72652
5 changed files with 31 additions and 14 deletions

View file

@ -47,7 +47,7 @@ const configSchema = {
"NowPlaying": "true" "NowPlaying": "true"
}, },
"advanced": { "advanced": {
"AudioContext" : true, "AudioContext" : false,
} }
} }

View file

@ -18,9 +18,19 @@ var CiderAudio = {
} }
}, 1000); }, 1000);
}, },
off: function(){
try{
CiderAudio.audioNodes.gainNode.disconnect();
CiderAudio.source.connect(CiderAudio.context.destination);} catch(e){}
},
connectContext: function (mediaElem){ connectContext: function (mediaElem){
if (!CiderAudio.context){
CiderAudio.context = new (window.AudioContext || window.webkitAudioContext); CiderAudio.context = new (window.AudioContext || window.webkitAudioContext);
}
if (!CiderAudio.source){
CiderAudio.source = CiderAudio.context.createMediaElementSource(mediaElem); CiderAudio.source = CiderAudio.context.createMediaElementSource(mediaElem);
} 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); CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
@ -30,7 +40,7 @@ var CiderAudio = {
}, },
normalizerOn: function (){}, normalizerOn: function (){},
normalizerOff: function (){ normalizerOff: function (){
CiderAudio.audioNodes.gainNode.gain.value = 1; CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime+ 1, 0.5);
} }
} }

File diff suppressed because one or more lines are too long

View file

@ -594,7 +594,6 @@
} }
</script> </script>
<script src="index.js?v=1"></script> <script src="index.js?v=1"></script>
<script src="/audio/tuna.js?v=1"></script>
<script src="/audio/audio.js?v=1"></script> <script src="/audio/audio.js?v=1"></script>
</body> </body>
</html> </html>

View file

@ -26,6 +26,16 @@
</div> </div>
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment">
Enable AudioContext Functionality
<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>
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.advanced.AudioContext" v-on:change="toggleAudioContext" switch/>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
<div class="md-option-segment" > <div class="md-option-segment" >
Audio Normalization Audio Normalization
</div> </div>
@ -451,16 +461,6 @@
<div class="md-option-header"> <div class="md-option-header">
<span>Unfinished / Non Functional</span> <span>Unfinished / Non Functional</span>
</div> </div>
<div class="md-option-line">
<div class="md-option-segment">
Enable AudioContext Functionality
<br>
<small>Enabling AudioContext functionality will allow for extended audio features like Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" switch/>
</div>
</div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Theme Theme
@ -555,6 +555,15 @@
} }
}, },
methods: { methods: {
toggleAudioContext: function(){
if (app.cfg.advanced.AudioContext){
CiderAudio.init();
if (app.cfg.audio.normalization){
CiderAudio.normalizerOn()}
} else {
CiderAudio.off();
}
},
toggleNormalization : function(){ toggleNormalization : function(){
if (app.cfg.audio.normalization){ if (app.cfg.audio.normalization){
CiderAudio.normalizerOn() CiderAudio.normalizerOn()