diff --git a/src/contexts/AudioAnalyzerContext.tsx b/src/contexts/AudioAnalyzerContext.tsx
new file mode 100644
index 0000000..37f8e2f
--- /dev/null
+++ b/src/contexts/AudioAnalyzerContext.tsx
@@ -0,0 +1,130 @@
+import { createContext, useContext, useRef, useCallback, ReactNode, useEffect, useState } from 'react';
+
+interface AudioAnalyzerContextType {
+ analyzerNode: AnalyserNode | null;
+ audioContext: AudioContext | null;
+ connectAudioElement: (element: HTMLAudioElement) => void;
+ disconnectAudioElement: (element: HTMLAudioElement) => void;
+ connectOscillator: (oscillator: OscillatorNode, gainNode: GainNode) => void;
+ isReady: boolean;
+}
+
+const AudioAnalyzerContext = createContext
(undefined);
+
+export const AudioAnalyzerProvider = ({ children }: { children: ReactNode }) => {
+ const audioContextRef = useRef(null);
+ const analyzerRef = useRef(null);
+ const sourceMapRef = useRef