Kein Video geladen. YouTube-Link/Video-ID einfügen oder eine lokale Videodatei auswählen.
YouTube-Player konnte nicht geladen werden.
Die App hat bereits mehrfach automatisch versucht, das YouTube-Script neu zu laden (siehe Status
unten), ohne Erfolg, und versucht es im Hintergrund weiter alle paar Sekunden. Meist ein
Ad-/Tracking-Blocker, der das YouTube-Embed-Script blockiert (auch wenn youtube.com selbst normal
funktioniert), gelegentlich auch nur eine vorübergehende Netzwerkstörung. Blocker für diese Seite
deaktivieren/whitelisten, dann erneut versuchen (auch der Status-Text unten in der Fußzeile lässt
sich anklicken, um sofort einen neuen Versuch auszulösen, statt auf den nächsten Hintergrund-Versuch
zu warten).
Keine Datei ausgewählt
Warteliste
Suche
Nutzt die offizielle YouTube Data API und zeigt nur Videos, die sich einbetten lassen.
Gemeinsame Session
Code------
QR-Code scannen, Link öffnen oder Code eingeben – andere können dann Songs zur gemeinsamen Warteliste hinzufügen.
Eigener Mikrofon-Pegel — bewegt sich der Balken beim Sprechen/Singen nicht, wird dein Ton
nicht erfasst (Berechtigung prüfen bzw. richtiges Mikro am Gerät ausgewählt?).
100
Regelt, wie laut dein Mikrofon bereits an der Quelle gesendet wird — hilft gegen
Übersteuern bei lauter Stimme oder gegen Rückkopplung (leiser stellen).
Überträgt den Ton dieses Geräts in Echtzeit per WebRTC zur Hauptsession und legt ihn dort über den
Video-Sound. Lautstärke und Verzögerung dafür stellt die Hauptsession unter Einstellungen →
Externe Mikrofone ein. Bis zu 4 Handy-Mikros gleichzeitig möglich.
Einstellungen
Warteliste
Angehakt (Standard): Songs verschwinden aus der Warteliste, sobald sie über "Nächster" gestartet
werden. Nicht angehakt: Songs bleiben in der Liste und wandern stattdessen ans Ende — praktisch zum
Testen/Wiederholen, ohne sie jedes Mal neu hinzufügen zu müssen.
YouTube-API-Key
✓ API-Key hinzugefügt
Wird für die Karaoke-Suche benötigt (bleibt nur lokal in diesem Browser gespeichert).
Video-Ton
80
0
Positiv = Video läuft später (für langsame Mikro-Kette). Negativ = Video läuft früher.
Mikrofone
Mikro 1 L
100
0
Mikro 2 R
100
0
100
Mikrofone noch nicht aktiviert.
📱 Externe Mikrofone (Handys)
Für Handy-Mikrofone zuerst eine Session starten (Warteliste-Bereich → "Session starten").
🧪 Experimentell: Original-Gesang
100
Lautstärke der (per KI getrennten) Original-Gesangsspur bei der Wiedergabe unter
"🧪 Experimentell" – auf 0 stellen für reines Karaoke ohne Vorsänger, hoch stellen zum Mitsingen-Üben.
Hilfe & SingStar-PS2-Mikrofone
Kurzanleitung
YouTube-Link oder Video-ID einfügen und Laden klicken.
Oben auf ⚙ Einstellungen klicken, dort auf Mikros aktivieren und im Browser den Mikrofonzugriff erlauben.
Passendes USB-Audiogerät in der Liste auswählen.
Lautstärken für Video und Mikro(s) getrennt einstellen (ebenfalls in den Einstellungen).
Falls Gesang/Bild nicht synchron wirken: Sync-Offset bzw. Mikro-Delay in kleinen Schritten anpassen, bis es passt.
Warteliste verwalten
Standardmäßig verschwindet ein Song aus der Warteliste, sobald er über Nächster gestartet wird.
Unter ⚙ Einstellungen → Warteliste lässt sich das mit der Checkbox Wiedergabeliste leeren
abschalten – dann wandert der gestartete Song stattdessen ans Ende der Liste, statt zu verschwinden
(praktisch zum Testen oder für Playlists, die sich wiederholen sollen).
Über Exportieren unter der Warteliste lässt sich die aktuelle Liste als Datei speichern (z.B. um
sie mit anderen zu teilen oder für später aufzuheben), über Importieren wieder einladen – die
importierten Songs werden zur aktuellen Liste hinzugefügt. Zusätzlich merkt sich die App die Warteliste
automatisch im Browser (localStorage), solange keine geteilte Session aktiv ist – ein Neuladen der Seite
verliert sie also nicht von selbst.
Gemeinsame Session (Songs vom Handy hinzufügen)
Über Session starten lässt sich eine geteilte Warteliste öffnen: Andere Geräte (z.B. Smartphones
der Gäste) rufen den angezeigten Link auf oder geben den 6-stelligen Code ein und können darüber Songs
zur selben Warteliste hinzufügen – ideal, weil Singen übers Handy-Mikro zwar technisch ginge, den
Songtext lesen darauf aber eher unpraktisch ist. Auf einem Gerät, das über den Link beitritt, zeigt die
App automatisch eine schlanke Ansicht nur mit Suche/Warteliste, ohne Player und Mixer.
Technisch läuft das über einen kleinen Cloudflare Worker mit einer Durable Object pro Session (Code =
Name der Durable Object). Alle Geräte fragen den gemeinsamen Zustand alle paar Sekunden ab (Polling,
kein WebSocket nötig). Ist zum Zeitpunkt des Session-Starts bereits ein YouTube-API-Key hinterlegt,
wird dieser ebenfalls über die Session geteilt, damit auch beitretende Geräte direkt suchen können,
ohne selbst einen Key eingeben zu müssen.
Der Session-Code ist die einzige Zugriffskontrolle (wie ein Jackbox-Party-Code) – wer ihn kennt, kann
Songs hinzufügen und sieht einen eventuell geteilten API-Key. Für private Runden unter Freunden ist das
unkritisch; den Code entsprechend nicht öffentlich teilen. Ein geteilter API-Key sollte wie oben
beschrieben per HTTP-Referrer eingeschränkt sein. Sessions laufen nicht automatisch ab; "Verbindung
trennen" beendet nur die Teilnahme des eigenen Geräts, nicht die Session selbst.
Handy als drahtloses Mikrofon
Auf jedem Gerät, das einer laufenden Session beitritt (also nicht auf dem Hauptgerät selbst – das
singt ja bereits über seine eigenen angeschlossenen Mikros), erscheint der Button
🎤 Als Mikro verwenden: Das Gerät nimmt seinen eigenen Mikrofon-Ton auf und überträgt ihn per
WebRTC in Echtzeit (typisch 20–60 ms Latenz) direkt zur Hauptsession, wo er über den Video-Sound
gelegt wird – bis zu 4 Geräte gleichzeitig. Die Hauptsession regelt Lautstärke, Verzögerung (Delay) und
Stumm für jedes Handy-Mikro einzeln unter ⚙ Einstellungen → Externe Mikrofone (Handys), inklusive
VU-Meter. Zusätzlich lässt sich direkt auf dem sendenden Gerät der Eingangspegel regeln – schon
an der Quelle leiser stellen hilft sowohl gegen Übersteuern bei lauter Stimme als auch gegen
Rückkopplung.
Beide Seiten zeigen einen eigenen Pegel-Balken zur Fehlersuche: Auf dem Handy selbst direkt unter dem
leuchtenden Mikro-Symbol ("bewegt sich das beim Sprechen nicht, wird dein Ton nicht erfasst" – meist
falsche Mikrofonauswahl oder fehlende Berechtigung am Gerät), auf der Hauptsession pro verbundenem Handy
in den Einstellungen ("bewegt sich das nicht, kommt der Ton dort nicht an" – meist ein
Verbindungsproblem statt einer fehlenden Aufnahme).
Verbindungsaufbau (wer mit wem spricht) läuft über denselben Cloudflare Worker wie die Warteliste; der
eigentliche Ton geht danach direkt zwischen den Geräten hin und her, nicht über den Worker. Funktioniert
zuverlässig im selben WLAN; in restriktiveren Netzwerken (z.B. manche Firmen-/Hotel-Netze) kann der
Verbindungsaufbau ohne einen zusätzlichen TURN-Server fehlschlagen. "Trennen" (auf beiden Seiten
verfügbar) gibt den Platz wieder frei.
Rückkopplung/Pfeifen/Hall bei Mikrofonen (Handy & lokal)
Wenn ein Mikro (Handy oder lokal angeschlossenes SingStar/USB-Mikro) in der Nähe der Lautsprecher der
Hauptsession steht, kann es passieren, dass es deren Ausgabe (Video + bereits gemischte Stimmen) wieder
mit aufnimmt – das geht zurück in den Mix, wird erneut abgespielt, erneut aufgenommen usw. Das ist eine
akustische Rückkopplung (wie bei jeder PA-Anlage) und lässt sich nicht rein softwareseitig auf null
bringen, wenn Mikro und Lautsprecher im selben Raum offen sind. Je nach Lautstärke/Abstand äußert sich
das entweder als lautes Pfeifen oder – bei niedrigerer Schleifenverstärkung – als ein hallartiges,
abklingendes Echo der eigenen Stimme: Beides ist dasselbe Phänomen, nur unterschiedlich stark. Die App
entschärft das an mehreren Stellen: Jeder Mikro-Kanal (Handy wie lokal) hat einen Begrenzer (Limiter),
der ein Aufschaukeln kappt statt es unkontrolliert lauter werden zu lassen, zusätzlich sitzt ein
Begrenzer auf dem gesamten Mikro-Ausgang; Handy-Mikros starten außerdem standardmäßig mit einer
niedrigeren Lautstärke (70% statt 100%) und lassen sich am sendenden Gerät direkt an der Quelle absenken
(Eingangspegel).
Hilft das nicht ausreichend: Lautstärke bzw. Eingangspegel des betroffenen Mikros weiter absenken, das
Mikro weiter von den Lautsprechern wegbewegen bzw. die Lautsprecher-Lautstärke insgesamt reduzieren,
oder für die singende Person Kopfhörer statt offener Lautsprecher zum Mithören der Hauptsession
verwenden.
Original SingStar-USB-Mikrofone (PS2)
Die originalen SingStar-Mikrofone für die PS2 werden nicht direkt, sondern über den mitgelieferten
USB-Funkempfänger (Dongle) angeschlossen. Dieser Dongle ist klassenkonform
(USB Audio Class) und wird von Windows, macOS und Linux ohne Zusatztreiber als ganz normales
Mikrofon-Eingabegerät erkannt – meist als 2-kanaliges Stereo-Gerät, bei dem
Mikrofon 1 auf dem linken und Mikrofon 2 auf dem rechten Kanal liegt.
USB-Dongle einstecken, den Browser als Audioquelle nutzen lassen.
In den Betriebssystem-Soundeinstellungen prüfen, wie das Gerät heißt (z.B. "USB Microphone" o.ä.).
In dieser App unter Audiogerät genau dieses Gerät auswählen.
Stereo-Splitting aktiviert lassen – die App trennt L/R automatisch in Mikro 1 und Mikro 2.
Falls nur ein Mikro Ton liefert oder beide vertauscht sind: Mikrofone testweise tauschen bzw.
Lautstärkeregler der beiden Spalten einzeln prüfen.
Hinweis: Manche Mainboards/USB-Controller liefern das Signal sehr leise. In diesem Fall den
Regler "Lautstärke" der Mikro-Spalte über 100% anheben.
Wichtig: Ein Gerätewechsel im Audiogerät-Dropdown greift erst, wenn danach wieder
Mikros aktivieren angeklickt wird (bzw. sofort, falls die Mikros bereits aktiv sind – dann startet
die Engine automatisch mit dem neu gewählten Gerät neu). Läuft eine Rückkopplung auf, obwohl gar keine
SingStar-/USB-Mikros angeschlossen sind, nimmt die App fast immer noch das eingebaute Notebook-Mikrofon
auf – das liegt direkt neben den eingebauten Lautsprechern und koppelt daher besonders leicht zurück.
In dem Fall im Dropdown gezielt das gewünschte Gerät auswählen, oder über Mikros deaktivieren
(derselbe Button, sobald die Mikros aktiv sind) das Mikrofon komplett freigeben, statt es nur stummzuschalten.
Nach Mikros aktivieren zeigt der Statustext direkt an, ob echtes Stereo erkannt wurde. Steht dort
"nur 1 Kanal (Mono) erkannt", liefert der Treiber/das Betriebssystem trotz Anfrage kein echtes Stereo –
dann laufen beide SingStar-Mikros zusammen auf Mikro 1, eine Trennung ist in diesem Fall softwareseitig
nicht möglich (Betriebssystem-Soundeinstellungen prüfen, ob dort eine Stereo-Option existiert).
Auch die lokalen Mikrofon-Kanäle (SingStar/USB) haben inzwischen denselben Begrenzer (Limiter) gegen
Rückkopplungs-Aufschaukeln wie die Handy-Mikros – der Abschnitt "Rückkopplung/Pfeifen/Hall bei
Handy-Mikros" weiter unten gilt inhaltlich genauso für sie.
Technische Grenzen
Der Ton eines eingebetteten YouTube-Videos kann aus rechtlichen/technischen Gründen (Cross-Origin)
nicht in die Web-Audio-Engine eingespeist werden. Video- und Mikrofon-Lautstärke werden daher
getrennt, aber parallel geregelt (YouTube-eigene Lautstärke + Web-Audio-Mixer für Mikros).
Für den Sync-Ausgleich wird die Videowiedergabe zeitlich nachjustiert bzw. das Mikrofonsignal
per Delay-Node verzögert.
Bei Wiedergabe über Lautsprecher (statt Kopfhörer) kann es zu Rückkopplungen/Echo kommen – für
beste Ergebnisse Kopfhörer für die Sänger:innen verwenden oder Lautsprecher-Lautstärke moderat halten.
Manche YouTube-Videos lassen sich vom Rechteinhaber nicht extern einbetten ("Video nicht
verfügbar" / Embedding deaktiviert). Das ist eine bewusste YouTube-seitige Einschränkung und lässt
sich nicht umgehen – in diesem Fall den Modus Lokale Datei mit einer legal vorliegenden
Videodatei desselben Songs nutzen.
"YouTube-Player konnte nicht geladen werden": Das liegt so gut wie immer an einem
Ad-/Tracking-Blocker im Browser (z.B. uBlock Origin), der das eingebettete YouTube-Player-Script
blockiert – auch wenn youtube.com direkt aufgerufen normal funktioniert, da Embed-Player oft separat
gefiltert werden. Abhilfe: den Blocker für diese Seite deaktivieren bzw. auf die Whitelist setzen. Die
App versucht die Verbindung danach automatisch im Hintergrund weiter neu aufzubauen (kein manuelles
Neuladen der Seite nötig) – ein Klick auf den Status-Text unten in der Fußzeile löst sofort einen neuen
Versuch aus, statt auf den nächsten Hintergrund-Versuch zu warten.
Karaoke-Suche & YouTube-API-Key
Über das Suchfeld im YouTube-Modus lässt sich direkt nach Karaoke-Videos suchen. Die Suche läuft über
die offizielle YouTube Data API v3 mit dem Parameter videoEmbeddable=true (und
videoSyndicated=true) – dadurch werden von vornherein nur Videos angezeigt, die sich extern
einbetten und abspielen lassen. Das genaue Problem aus der Kurzanleitung ("Video nicht verfügbar –
Wiedergabe auf anderen Websites deaktiviert") taucht in den Suchergebnissen also gar nicht erst auf.
Zusätzlich prüft die App für jedes Ergebnis per contentDetails.contentRating, ob es
altersbeschränkt ist ("Sign in to confirm your age") – solche Videos lassen sich zwar technisch
einbetten, verweigern die Wiedergabe im eingebetteten Player aber trotzdem und werden daher ebenfalls
aus den Suchergebnissen entfernt.
Dafür wird ein eigener, kostenloser API-Key benötigt:
Unter APIs & Dienste → Bibliothek nach "YouTube Data API v3" suchen und aktivieren.
Unter APIs & Dienste → Anmeldedaten einen neuen API-Schlüssel erstellen.
Empfohlen: Den Schlüssel einschränken auf die "YouTube Data API v3" sowie per HTTP-Referrer auf die
eigene Domain (z.B. https://popesick.github.io/*) – so kann er bei Verlust nicht für
andere Zwecke missbraucht werden.
Den Key unter ⚙ Einstellungen (oben in der App bzw. über "API-Key verwalten" im Suchbereich)
einfügen und auf Speichern klicken. Er wird nur lokal im Browser (localStorage) abgelegt und
nirgendwo sonst hin übertragen außer direkt an Google beim Suchen.
Das kostenlose Kontingent liegt bei 10.000 Einheiten/Tag; eine Suche kostet 100 Einheiten – macht rund
100 Suchanfragen pro Tag, bevor Google die Anfrage ablehnt.
Modus "Lokale Datei"
Alternativ zu YouTube lässt sich eine eigene Videodatei (MP4, WebM, …) direkt aus dem Dateisystem laden
und abspielen – z.B. selbst erstellte Karaoke-Videos oder legal erworbene/lizenzierte Dateien. Der
große Vorteil gegenüber YouTube: Da hier kein Cross-Origin-iframe im Weg steht, wird der Video-Ton
echt in die Web-Audio-Engine eingespeist und läuft über denselben Ausgabepfad wie die Mikrofone –
Lautstärke- und Sync-Regelung greifen hier technisch identisch.
Bitte nur Dateien verwenden, an denen die entsprechenden Rechte vorliegen (eigene Aufnahmen, gekaufte/
lizenzierte Inhalte). Die Datei verlässt den Browser nicht – sie wird nur lokal abgespielt.
Über + Warteliste neben der Dateiauswahl lässt sich eine lokale Datei auch in die gemeinsame
Warteliste einreihen (erkennbar am 💾-Symbol) – gemischt mit YouTube-Songs. Da eine lokale Datei nur in
diesem Browser existiert, ist das nur ohne aktive Session möglich; bereits geteilte Sessions können
keine lokalen Dateien enthalten.
Über den Menüpunkt 🧪 Experimentell lässt sich ein beliebiger Song (Video/MP3/WAV/M4A) hochladen;
die App trennt Gesang und Instrumental per KI (Demucs/htdemucs, Metas quelloffenes
Gesangstrennungs-Modell, als ONNX-Export) komplett lokal im Browser – ohne Upload zu einem Server. Beim
Abspielen zeigt die App die Tonhöhe des Original-Gesangs als scrollenden Balken (wie im echten SingStar)
und vergleicht sie live mit der per Mikrofon erkannten eigenen Tonhöhe, inklusive Score. Die Lautstärke
des Original-Gesangs lässt sich unter ⚙ Einstellungen → Experimentell: Original-Gesang frei
zwischen 0–100% regeln.
Wichtige Einschränkungen, da das Ganze bewusst experimentell ist:
Geschwindigkeit: Die KI-Trennung läuft als echte neuronale Netz-Berechnung im Browser (kein
Server). Mit GPU-Beschleunigung über WebGPU (z.B. Chrome/Safari auf einem Mac mit Apple-Chip – jede
M-Generation gleichermaßen, da der Browser den genauen Chip aus Datenschutzgründen nicht preisgibt;
ebenso auf PCs mit unterstützter Grafikkarte) dauert ein kurzer Song wenige Minuten; ohne
WebGPU-Unterstützung (Fallback auf reines CPU/WASM) kann es für einen ganzen Song deutlich länger
dauern. Der Experimentell-Dialog zeigt oben direkt an, ob gerade GPU-beschleunigt gerechnet wird. Der
erste Durchlauf lädt zusätzlich einmalig das ca. 180 MB große Modell herunter (wird danach im
Browser zwischengespeichert).
Trennqualität hängt stark vom Gesangsstil ab: Klare, "normale" Gesangsaufnahmen trennen sich
meist brauchbar. Stark verzerrter, geschriener oder extrem verfremdeter Gesang (z.B. Metal/Screamo,
Vocoder-Effekte) wird vom Modell oft kaum als "Gesang" erkannt, da es überwiegend mit klassischerem
Gesang trainiert wurde – das Ergebnis kann dann nahezu stumm bleiben.
Songtext-Erkennung ist Beta und technisch ein Umweg: Browser können von sich aus keine
Audiodatei direkt per Spracherkennung transkribieren – die kostenlose Web-Speech-API hört nur live über
das Mikrofon mit. "Text erkennen" spielt den getrennten Gesang deshalb über die Lautsprecher ab,
während das Mikrofon akustisch mithört; das funktioniert nur einigermaßen in einem leisen Raum, ohne
zuverlässige Zeitstempel für eine zeilenweise Textanzeige.
Speicherung: Alles (Originaldatei, getrennte Spuren) wird nur lokal in diesem Browser
gespeichert (IndexedDB) – noch keine Cloud-Ablage (z.B. Google Drive) und noch keine Möglichkeit, einen
so verarbeiteten Song über eine geteilte Session von anderen Geräten zur Warteliste hinzufügen zu
lassen. Das ist für eine spätere Ausbaustufe vorgesehen.
🧪 Experimentell
KI-Gesangstrennung läuft komplett lokal im Browser (kein Upload, kein Server) über ein echtes
neuronales Netz (Demucs/htdemucs von Meta, MIT-lizenziert) – das bedeutet aber auch: ein einmaliger
~180 MB-Modell-Download, und die Trennung selbst dauert je nach Song und Gerät von wenigen Minuten
(mit GPU-Beschleunigung über WebGPU) bis zu deutlich länger (reiner CPU-Fallback). Die Trennqualität
hängt stark vom Gesangsstil ab: saubere Gesangsaufnahmen trennen sich meist gut, stark
verzerrter/geschriener Gesang dagegen oft schlecht. Alles wird nur lokal in diesem Browser gespeichert
(noch keine Cloud-/Geräte-übergreifende Ablage).
Track hochladen
Unterstützt alles, was der Browser selbst dekodieren kann (u.a. MP3, WAV, M4A, MP4).
Meine Tracks
▶ Score: –
Blaue Balken = Ziel-Tonhöhe des Original-Gesangs, pinker Punkt = deine live per Mikrofon erkannte
Tonhöhe. Score zählt, wie oft du nah genug an der Zielnote liegst (wie im Original-SingStar – die
Musik selbst wird dabei nicht automatisch korrigiert).