Update popup.js

This commit is contained in:
pliny
2023-08-12 18:19:15 -07:00
committed by GitHub
parent f537484af2
commit 14f4f25e42
+26 -30
View File
@@ -1,24 +1,17 @@
let audioContext;
let oscillatorLeft;
let oscillatorRight;
let gainNode;
let audioContext = new (window.AudioContext || window.webkitAudioContext)();
let oscillatorLeft, oscillatorRight, gainNode;
let isPlaying = false;
function startBinauralBeats(frequency, delta, volume) {
if (audioContext) {
audioContext.close();
}
audioContext = new (window.AudioContext || window.webkitAudioContext)();
function startBinauralBeats() {
oscillatorLeft = audioContext.createOscillator();
oscillatorRight = audioContext.createOscillator();
gainNode = audioContext.createGain();
oscillatorLeft.frequency.setValueAtTime(frequency, audioContext.currentTime);
oscillatorRight.frequency.setValueAtTime(frequency + delta, audioContext.currentTime);
oscillatorLeft.type = 'sine';
oscillatorRight.type = 'sine';
gainNode.gain.setValueAtTime(volume, audioContext.currentTime);
updateFrequencies();
updateVolume();
oscillatorLeft.connect(gainNode);
oscillatorRight.connect(gainNode);
@@ -31,24 +24,29 @@ function startBinauralBeats(frequency, delta, volume) {
}
function stopBinauralBeats() {
if (oscillatorLeft) {
oscillatorLeft.stop();
}
if (oscillatorRight) {
oscillatorRight.stop();
}
oscillatorLeft.stop();
oscillatorRight.stop();
isPlaying = false;
}
function updateFrequencies() {
let frequency = parseFloat(document.getElementById('frequencySlider').value);
let delta = parseFloat(document.getElementById('deltaSlider').value);
oscillatorLeft.frequency.setValueAtTime(frequency, audioContext.currentTime);
oscillatorRight.frequency.setValueAtTime(frequency + delta, audioContext.currentTime);
}
function updateVolume() {
let volume = parseFloat(document.getElementById('volumeSlider').value);
gainNode.gain.setValueAtTime(volume, audioContext.currentTime);
}
document.getElementById('togglePlayPause').addEventListener('click', function() {
if (isPlaying) {
stopBinauralBeats();
this.textContent = 'Play';
} else {
let frequency = Number(document.getElementById('frequencySlider').value);
let delta = Number(document.getElementById('deltaSlider').value);
let volume = Number(document.getElementById('volumeSlider').value);
startBinauralBeats(frequency, delta, volume);
startBinauralBeats();
this.textContent = 'Pause';
}
});
@@ -56,22 +54,21 @@ document.getElementById('togglePlayPause').addEventListener('click', function()
document.getElementById('frequencySlider').addEventListener('input', function() {
document.getElementById('frequencyDisplay').textContent = `Frequency: ${this.value} Hz`;
if (isPlaying) {
oscillatorLeft.frequency.setValueAtTime(Number(this.value), audioContext.currentTime);
updateFrequencies();
}
});
document.getElementById('deltaSlider').addEventListener('input', function() {
document.getElementById('deltaDisplay').textContent = `Delta: ${this.value} Hz`;
if (isPlaying) {
let frequency = Number(document.getElementById('frequencySlider').value);
oscillatorRight.frequency.setValueAtTime(frequency + Number(this.value), audioContext.currentTime);
updateFrequencies();
}
});
document.getElementById('volumeSlider').addEventListener('input', function() {
document.getElementById('volumeDisplay').textContent = `Volume: ${Math.round(this.value * 100)}%`;
if (isPlaying) {
gainNode.gain.setValueAtTime(Number(this.value), audioContext.currentTime);
updateVolume();
}
});
@@ -86,7 +83,6 @@ document.getElementById('randomize').addEventListener('click', function() {
document.getElementById('deltaDisplay').textContent = `Delta: ${randomDelta} Hz`;
if (isPlaying) {
oscillatorLeft.frequency.setValueAtTime(randomFrequency, audioContext.currentTime);
oscillatorRight.frequency.setValueAtTime(randomFrequency + randomDelta, audioContext.currentTime);
updateFrequencies();
}
});