Testdatei

Ton zu Key

Testseite: Mikrofon-Ton wird gelesen und alle 2 Sekunden in einen reproduzierbaren Key umgewandelt.

Steuerung

Statusidle
Aktueller Key-

So funktioniert es (3 Schritte)

1) Permission
Beim Klick auf „Mikrofon starten“ wird die Browser-Funktion navigator.mediaDevices.getUserMedia() aufgerufen. Diese Funktion fragt den Benutzer um Erlaubnis, auf das Mikrofon zuzugreifen. Wenn die Erlaubnis erteilt wird, stellt der Browser einen sogenannten MediaStream bereit. Dieser MediaStream ist ein Live-Audiostream, der kontinuierlich den aktuellen Ton vom Mikrofon liefert.

2) Ton holen
Der MediaStream wird in einen AudioContext eingespeist. Der AudioContext ist die Audio-Verarbeitungsumgebung des Browsers. Innerhalb dieses Systems wird ein AnalyserNode verwendet, der das Audiosignal in ein Frequenzspektrum umwandelt. Dabei wird eine mathematische Transformation (FFT, Fast Fourier Transform) verwendet, um zu berechnen, wie stark verschiedene Frequenzen (z.B. tiefe oder hohe Töne) im Signal vertreten sind. Das Ergebnis ist ein Array mit Zahlenwerten, die die Energie in verschiedenen Frequenzbereichen beschreiben. Alle 80 Millisekunden wird ein solcher Snapshot gespeichert, sodass die letzten ~2 Sekunden Audio verfügbar sind.

3) Key erzeugen
Alle 2 Sekunden werden die gesammelten Frequenzdaten gemittelt, um einen stabilen Durchschnittswert zu erhalten. Dieses durchschnittliche Spektrum wird in 16 logarithmisch verteilte Frequenzbänder aufgeteilt. Für jedes Band wird berechnet, wie stark es relativ zur Gesamtenergie ist. Diese Werte werden anschliessend quantisiert, das heisst auf eine begrenzte Anzahl diskreter Stufen gerundet, damit kleine Schwankungen nicht sofort einen komplett neuen Key erzeugen. Die resultierenden Ganzzahlen werden schliesslich in eine Base36-Zeichenkette umgewandelt. Dieser String ist der finale Key und stellt eine kompakte, reproduzierbare Darstellung des aktuellen Klangzustands dar.

Hinweis: Mikrofonzugriff funktioniert aus Sicherheitsgründen nur über HTTPS oder auf localhost.

Log

Alle 2 Sekunden wird ein neuer Key berechnet.

Noch keine Messung.