Update popup.js

This commit is contained in:
pliny
2023-08-12 17:43:00 -07:00
committed by GitHub
parent edd76bbc1d
commit acb1f6b07f

View File

@@ -1,42 +1,69 @@
let audioContext = new (window.AudioContext || window.webkitAudioContext)();
let oscillatorLeft, oscillatorRight, gainNode;
let isPlaying = false;
let frequencySlider = document.getElementById('frequencySlider');
let deltaSlider = document.getElementById('deltaSlider');
let volumeSlider = document.getElementById('volumeSlider');
let playPauseButton = document.getElementById('togglePlayPause');
// Update frequency display
frequencySlider.addEventListener('input', function() {
document.getElementById('frequencyDisplay').textContent = `Frequency: ${frequencySlider.value} Hz`;
});
function startBinauralBeats(frequency, delta, volume) {
oscillatorLeft = audioContext.createOscillator();
oscillatorRight = audioContext.createOscillator();
gainNode = audioContext.createGain();
// Update delta display
deltaSlider.addEventListener('input', function() {
document.getElementById('deltaDisplay').textContent = `Delta: ${deltaSlider.value} Hz`;
});
oscillatorLeft.type = 'sine';
oscillatorRight.type = 'sine';
// Update volume display
volumeSlider.addEventListener('input', function() {
document.getElementById('volumeDisplay').textContent = `Volume: ${Math.round(volumeSlider.value * 100)}%`;
});
oscillatorLeft.frequency.setValueAtTime(frequency, audioContext.currentTime);
oscillatorRight.frequency.setValueAtTime(frequency + delta, audioContext.currentTime);
gainNode.gain.setValueAtTime(volume, audioContext.currentTime);
oscillatorLeft.connect(gainNode);
oscillatorRight.connect(gainNode);
gainNode.connect(audioContext.destination);
oscillatorLeft.start();
oscillatorRight.start();
isPlaying = true;
}
function stopBinauralBeats() {
oscillatorLeft.stop();
oscillatorRight.stop();
isPlaying = false;
}
playPauseButton.addEventListener('click', function() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
let activeTab = tabs[0];
chrome.scripting.executeScript({
target: {tabId: activeTab.id},
files: ['content.js']
}, () => {
chrome.tabs.sendMessage(activeTab.id, {
action: 'togglePlayPause',
frequency: Number(frequencySlider.value),
delta: Number(deltaSlider.value),
volume: Number(volumeSlider.value)
}, (response) => {
if (response && response.status === 'playing') {
playPauseButton.textContent = 'Pause';
} else {
playPauseButton.textContent = 'Play';
}
});
});
});
if (isPlaying) {
stopBinauralBeats();
playPauseButton.textContent = 'Play';
} else {
startBinauralBeats(Number(frequencySlider.value), Number(deltaSlider.value), Number(volumeSlider.value));
playPauseButton.textContent = 'Pause';
}
});
frequencySlider.addEventListener('input', function() {
document.getElementById('frequencyDisplay').textContent = `Frequency: ${frequencySlider.value} Hz`;
if (isPlaying) {
oscillatorLeft.frequency.setValueAtTime(Number(frequencySlider.value), audioContext.currentTime);
oscillatorRight.frequency.setValueAtTime(Number(frequencySlider.value) + Number(deltaSlider.value), audioContext.currentTime);
}
});
deltaSlider.addEventListener('input', function() {
document.getElementById('deltaDisplay').textContent = `Delta: ${deltaSlider.value} Hz`;
if (isPlaying) {
oscillatorRight.frequency.setValueAtTime(Number(frequencySlider.value) + Number(deltaSlider.value), audioContext.currentTime);
}
});
volumeSlider.addEventListener('input', function() {
document.getElementById('volumeDisplay').textContent = `Volume: ${Math.round(volumeSlider.value * 100)}%`;
if (isPlaying) {
gainNode.gain.setValueAtTime(Number(volumeSlider.value), audioContext.currentTime);
}
});