mirror of
https://github.com/remvze/moodist.git
synced 2025-12-17 00:44:14 +00:00
fix(component): update oscillators frequency on preset change
Update oscillators frequency on preset change
This commit is contained in:
parent
348fc1e8c4
commit
dcc91e038d
1 changed files with 24 additions and 4 deletions
|
|
@ -25,6 +25,16 @@ const presets: Preset[] = [
|
|||
{ baseFrequency: 440, beatFrequency: 10, name: 'Custom' },
|
||||
];
|
||||
|
||||
function computeBinauralBeatOscillatorFrequencies(
|
||||
baseFrequency: number,
|
||||
beatFrequency: number,
|
||||
) {
|
||||
return {
|
||||
leftFrequency: baseFrequency - beatFrequency / 2,
|
||||
rightFrequency: baseFrequency + beatFrequency / 2,
|
||||
};
|
||||
}
|
||||
|
||||
export function BinauralModal({ onClose, show }: BinauralProps) {
|
||||
const [baseFrequency, setBaseFrequency] = useState<number>(440); // Default to A4 note
|
||||
const [beatFrequency, setBeatFrequency] = useState<number>(10); // Default to 10 Hz difference
|
||||
|
|
@ -61,10 +71,10 @@ export function BinauralModal({ onClose, show }: BinauralProps) {
|
|||
)
|
||||
return;
|
||||
|
||||
leftOscillatorRef.current.frequency.value =
|
||||
baseFrequency - beatFrequency / 2;
|
||||
rightOscillatorRef.current.frequency.value =
|
||||
baseFrequency + beatFrequency / 2;
|
||||
const { leftFrequency, rightFrequency } =
|
||||
computeBinauralBeatOscillatorFrequencies(baseFrequency, beatFrequency);
|
||||
leftOscillatorRef.current.frequency.value = leftFrequency;
|
||||
rightOscillatorRef.current.frequency.value = rightFrequency;
|
||||
|
||||
// Pan oscillators to left and right
|
||||
const leftPanner = audioContext.createStereoPanner();
|
||||
|
|
@ -104,6 +114,16 @@ export function BinauralModal({ onClose, show }: BinauralProps) {
|
|||
}
|
||||
}, [volume]);
|
||||
|
||||
useEffect(() => {
|
||||
// Update base frequency for both left and right oscillators when it changes
|
||||
if (leftOscillatorRef.current && rightOscillatorRef.current) {
|
||||
const { leftFrequency, rightFrequency } =
|
||||
computeBinauralBeatOscillatorFrequencies(baseFrequency, beatFrequency);
|
||||
leftOscillatorRef.current.frequency.value = leftFrequency;
|
||||
rightOscillatorRef.current.frequency.value = rightFrequency;
|
||||
}
|
||||
}, [baseFrequency, beatFrequency]);
|
||||
|
||||
useEffect(() => {
|
||||
// Cleanup when component unmounts
|
||||
return () => {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue