# Volume Booster — Chrome Extension Ein Volume Booster für Chrome: macht jeden Tab lauter (bis 600 %) oder leiser, mit stummschalten und Schnellwahl-Presets. ## Installieren 1. ZIP entpacken (falls noch nicht geschehen). 2. In Chrome `chrome://extensions` öffnen. 3. Oben rechts **Entwicklermodus** einschalten. 4. **Entpackte Erweiterung laden** klicken und den Ordner `volume-booster` auswählen. 5. Das Lautsprecher-Icon erscheint in der Toolbar — anpinnen, fertig. ## Benutzen - Auf das Icon klicken, um das Panel zu öffnen. - **Slider** ziehen oder die **+ / –** Knöpfe nutzen (10 %-Schritte). - **Mute**-Knopf (mittig) schaltet stumm und beim erneuten Klick wieder zurück. - **Presets**: 100 % / 200 % / 400 % / 600 % für einen Klick. - Pfeiltasten ↑ / ↓ funktionieren ebenfalls, wenn das Panel offen ist. ## Wie es funktioniert - Bis **100 %** passiert nichts Besonderes — die Seite spielt normal. - Über **100 %** holt der Service Worker per `chrome.tabCapture.getMediaStreamId` eine Stream-ID des Tabs und reicht sie an ein **Offscreen-Dokument** weiter. Dort wird der Stream durch einen Web-Audio `GainNode` geschickt und verstärkt wieder ausgegeben. - Der Umweg über das Offscreen-Dokument ist in Manifest V3 nötig: Der Service Worker hat kein DOM und kann selbst kein Audio verarbeiten. - Pro Tab wird ein eigener Verstärkungswert gespeichert (für die Session). - Schließt du den Tab oder lädst ihn neu, wird der Stream sauber freigegeben. ## Hinweise - Bei sehr hohen Werten kann der Ton übersteuern/verzerren — das ist eine physikalische Grenze der Quelle, dann einfach etwas zurückdrehen. - Funktioniert nicht auf internen Seiten wie `chrome://`, dem Web Store oder anderen Extension-Seiten — dort gibt Chrome keinen Audio-Stream frei. - Beim ersten Verstärken eines Tabs muss kurz Audio laufen, damit Chrome den Stream herausgibt. - Verstärkung gilt jeweils für den Tab, in dem du sie einstellst. - Nach einem Update der Extension immer einmal auf `chrome://extensions` neu laden. ## Dateien | Datei | Zweck | |------------------|----------------------------------------------------------| | `manifest.json` | Extension-Manifest (Manifest V3) | | `background.js` | Service Worker — holt Stream-ID, steuert Offscreen-Doc | | `offscreen.html` | Unsichtbares Dokument, Träger des Audio-Codes | | `offscreen.js` | AudioContext + GainNode — das eigentliche Verstärken | | `popup.html` | Aufbau des Interfaces | | `popup.css` | Styling (dunkles Studio-Theme, Amber-Akzent) | | `popup.js` | Logik, State, Kommunikation mit dem Worker | | `icons/` | Icon in 16 / 32 / 48 / 128 px + SVG-Quelle |