From 024bd0f20dd41c93ba1b2e31293647b222c27550 Mon Sep 17 00:00:00 2001 From: Grzegorz Kucmierz Date: Wed, 4 Mar 2026 06:13:52 +0000 Subject: [PATCH] feat: add Tone Generator tool with precise audio controls and wave selection --- README.md | 7 + src/components/Sidebar.vue | 1 + src/components/tools/ToneGenerator.vue | 438 +++++++++++++++++++++++++ src/router/index.js | 6 + src/style.css | 2 + 5 files changed, 454 insertions(+) create mode 100644 src/components/tools/ToneGenerator.vue diff --git a/README.md b/README.md index 3ef8820..f3665bc 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,13 @@ Scan QR codes directly from your camera or device. - **History:** Keeps a log of scanned codes with options to copy or download as JSON. - **Responsive:** Fullscreen mode for immersive scanning experience. +### 🎵 Tone Generator +Generate precise audio frequencies directly in the browser. +- **Customizable:** Slide from 20 Hz to 20,000 Hz or type exact values. +- **Waveforms:** Choose between Sine, Square, Sawtooth, and Triangle waves. +- **Presets:** Quick access to common frequencies like 440 Hz (A4) and 528 Hz. +- **Safe:** Smooth volume ramping to protect against audio clicking. + --- ## Chrome Extension 🧩 diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue index 18c1151..e70feef 100644 --- a/src/components/Sidebar.vue +++ b/src/components/Sidebar.vue @@ -15,6 +15,7 @@ defineProps({ URL Cleaner QR Scanner QR Code + Tone Generator diff --git a/src/components/tools/ToneGenerator.vue b/src/components/tools/ToneGenerator.vue new file mode 100644 index 0000000..afe85bf --- /dev/null +++ b/src/components/tools/ToneGenerator.vue @@ -0,0 +1,438 @@ + + + + + diff --git a/src/router/index.js b/src/router/index.js index 989de5f..237206f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -5,6 +5,7 @@ import ClipboardSniffer from '../components/tools/ClipboardSniffer.vue' 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 PrivacyPolicy from '../views/PrivacyPolicy.vue' const routes = [ @@ -42,6 +43,11 @@ const routes = [ path: '/extension-privacy-policy', name: 'PrivacyPolicy', component: PrivacyPolicy + }, + { + path: '/tone-generator', + name: 'ToneGenerator', + component: ToneGenerator } ] diff --git a/src/style.css b/src/style.css index 0e29b6f..da6af39 100644 --- a/src/style.css +++ b/src/style.css @@ -24,6 +24,7 @@ --accent-cyan: #00f2fe; --accent-purple: #4facfe; --primary-accent: #00f2fe; + --primary-accent-rgb: 0, 242, 254; --title-glow: rgba(0, 255, 255, 0.2); --toggle-bg: rgba(255, 255, 255, 0.08); --toggle-border: rgba(255, 255, 255, 0.2); @@ -65,6 +66,7 @@ --accent-cyan: #0ea5e9; --accent-purple: #6366f1; --primary-accent: #0ea5e9; + --primary-accent-rgb: 14, 165, 233; --title-glow: rgba(14, 165, 233, 0.35); --toggle-bg: rgba(255, 255, 255, 1); --toggle-border: rgba(15, 23, 42, 0.2);