diff --git a/README.md b/README.md index f3665bc..369d105 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,13 @@ Generate precise audio frequencies directly in the browser. - **Presets:** Quick access to common frequencies like 440 Hz (A4) and 528 Hz. - **Safe:** Smooth volume ramping to protect against audio clicking. +### 🎙️ FFT Audio Analyzer +Visualize audio signals from your microphone in real-time. +- **Local Processing:** Utilizes the Web Audio API to process sound locally; no audio leaves your device. +- **Adjustable Resolution:** Modify the FFT size (Fast Fourier Transform resolution) for higher fidelity or speed. +- **Smoothing Controls:** Adjust the temporal smoothing parameter for fluid visualizations. +- **Live Canvas Rendering:** Silky smooth 60fps frame rate via requestAnimationFrame. + --- ## Chrome Extension 🧩 diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue index e70feef..a5dd347 100644 --- a/src/components/Sidebar.vue +++ b/src/components/Sidebar.vue @@ -16,6 +16,7 @@ defineProps({ QR Scanner QR Code Tone Generator + FFT Analyzer diff --git a/src/components/tools/FftAnalyzer.vue b/src/components/tools/FftAnalyzer.vue new file mode 100644 index 0000000..ef22952 --- /dev/null +++ b/src/components/tools/FftAnalyzer.vue @@ -0,0 +1,427 @@ + + + + + + + FFT Audio Analyzer + + + + + + + + Click start to visualize your microphone audio + + + {{ errorMessage }} + + + + + + + + + + Start Listening + + + + Stop Listening + + + + + + + + FFT Size (Resolution) + + + {{ opt.label }} + + + + + + + Smoothing + {{ smoothingTimeConstant.toFixed(2) }} + + + + + + + + + + + + + diff --git a/src/router/index.js b/src/router/index.js index 237206f..8384d03 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -6,6 +6,7 @@ import UrlCleaner from '../components/tools/UrlCleaner.vue' import QrScanner from '../components/tools/QrScanner.vue' import QrCode from '../components/tools/QrCode.vue' import ToneGenerator from '../components/tools/ToneGenerator.vue' +import FftAnalyzer from '../components/tools/FftAnalyzer.vue' import PrivacyPolicy from '../views/PrivacyPolicy.vue' const routes = [ @@ -48,6 +49,11 @@ const routes = [ path: '/tone-generator', name: 'ToneGenerator', component: ToneGenerator + }, + { + path: '/fft-analyzer', + name: 'FftAnalyzer', + component: FftAnalyzer } ]
Click start to visualize your microphone audio
{{ errorMessage }}