Update background.js

This commit is contained in:
pliny
2023-08-12 17:10:43 -07:00
committed by GitHub
parent 13ded38e66
commit e28dcbfb4c

View File

@@ -1,19 +1,53 @@
chrome.runtime.onInstalled.addListener(() => {
chrome.storage.sync.set({frequency: '440'});
});
let audioContext;
let oscillatorLeft;
let oscillatorRight;
let gainNode;
let isPlaying = false;
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (changeInfo.status === 'complete' && /^http/.test(tab.url)) {
chrome.scripting.executeScript({
target: {tabId: tabId},
files: ['binauralGenerator.js']
});
}
});
function startBinauralBeats(frequency, delta, volume) {
if (audioContext) {
audioContext.close();
}
chrome.action.onClicked.addListener((tab) => {
chrome.scripting.executeScript({
target: {tabId: tab.id},
files: ['binauralGenerator.js']
});
});
audioContext = new AudioContext();
oscillatorLeft = audioContext.createOscillator();
oscillatorRight = audioContext.createOscillator();
gainNode = audioContext.createGain();
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() {
if (oscillatorLeft) {
oscillatorLeft.stop();
}
if (oscillatorRight) {
oscillatorRight.stop();
}
isPlaying = false;
}
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === 'togglePlayPause') {
if (isPlaying) {
stopBinauralBeats();
sendResponse({ status: 'paused' });
} else {
startBinauralBeats(message.frequency, message.delta, message.volume);
sendResponse({ status: 'playing' });
}
}
});