mirror of
https://github.com/elder-plinius/binaural-beats-generator.git
synced 2026-02-12 16:52:50 +00:00
Update popup.js
This commit is contained in:
91
popup.js
91
popup.js
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user