From d7032338a56d976b8698ad9566e907e061edda60 Mon Sep 17 00:00:00 2001 From: Grzegorz Kucmierz Date: Wed, 4 Mar 2026 17:07:42 +0000 Subject: [PATCH] feat: add FFT Audio Analyzer tool for microphone visualization --- README.md | 7 + src/components/Sidebar.vue | 1 + src/components/tools/FftAnalyzer.vue | 427 +++++++++++++++++++++++++++ src/router/index.js | 6 + 4 files changed, 441 insertions(+) create mode 100644 src/components/tools/FftAnalyzer.vue 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 @@ + + + + + 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 } ]