App · Android · in Entwicklung

Irgendwo piept es. Nur wo?

Ein Ladegerät, ein Rauchmelder mit leerer Batterie, ein Kopfhörer-Etui, eine unterbrechungsfreie Stromversorgung im Keller. Man hört es und findet es nicht. BeepHunt hört mit, merkt sich genau dieses eine Geräusch und sagt beim Umhergehen, ob es wärmer oder kälter wird.

In Entwicklung · Kern und Prüfstände laufen, noch nicht veröffentlicht
ZIELGERÄUSCH 8,12 kHz 96 ms · alle 2,04 s SIGNAL Bestwert hier war es lauter WÄRMER weiter in diese Richtung Nächstes in 0,8 s Bisher gehört 11 × Gefunden
Ausgangslage

Warum das Ohr allein nicht reicht

Ein Piepen alle zwei Sekunden ist laut genug, um wahnsinnig zu machen, und zu kurz, um ihm zu folgen. Bis man den Kopf gedreht hat, ist es vorbei. Kommt es aus einer Schublade, hinter einem Schrank oder von der Decke, klingt es überall ähnlich, weil der Raum es an jeder Wand spiegelt.

Die naheliegenden Werkzeuge helfen nicht weiter. Ein Schallpegelmesser misst alles gleichzeitig: Kühlschrank, Straße, das eigene Atmen und das Piepen ergeben eine einzige Zahl. Ein Spektrum-Analysator zeigt zwar Frequenzen an, überlässt aber die ganze Arbeit dem Betrachter.

Alles addiert sich

Am Mikrofon kommt die Summe aller Schallquellen an. Wer eine davon verfolgen will, muss sie vorher aus dieser Summe heraustrennen.

Lauter heißt nicht näher

In einem möblierten Zimmer bilden sich stehende Wellen. Zwei Zentimeter Unterschied können bei hohen Tönen über laut oder leise entscheiden.

Ein Telefon hat ein Ohr

Richtungshören braucht mindestens zwei getrennte Aufnahmekanäle. Viele Geräte melden zwei und liefern in Wahrheit einen.

Der Ablauf

Zuhören, auswählen, hingehen

Die App stellt eine Frage und bietet eine Schaltfläche. Alles Weitere läuft im Hintergrund; was sie kann, hängt danach am Gerät, aber der Weg bis zum Fund funktioniert mit einem einzigen Mikrofon.

01

Zuhören

Die App hört mit und hält die letzten 15 Sekunden im Arbeitsspeicher. Dieser Vorlauf ist nötig: Wenn man die Schaltfläche drückt, ist das Piepen längst vorbei.

02

Auswählen

Aus dem Gehörten wird eine kurze Liste. Jeder Eintrag ist so beschrieben, dass man ihn wiedererkennt: „8,12 kHz, 96 ms, alle 2,04 s, elfmal gehört“.

03

Verfolgen

Ab jetzt zählt nur noch dieses eine Geräusch. Der Rest des Raums wird ignoriert. Beim Umhergehen meldet die App wärmer oder kälter und merkt sich den besten Punkt.

04

Richtung, wenn möglich

Wo die Hardware es hergibt: eine Drehung auf der Stelle für einen groben Sektor, zwei echte Mikrofone für eine Peilung, ein zweites Telefon für eine Ortung im Raum.

Die Physik dahinter

Was zwischen Mikrofon und Pfeil passiert

Der interessante Teil dieses Projekts ist nicht die Oberfläche, sondern die Frage, was sich aus einem Luftdruckverlauf überhaupt bestimmen lässt und was nicht. Die folgenden Abschnitte gehen den Weg der Reihe nach durch. Alle Zahlenwerte sind die, mit denen die App tatsächlich rechnet.

1 · Zeit gegen Frequenz: man bekommt nicht beides

Um zu wissen, welche Frequenz gerade klingt, muss man ein Stück Signal betrachten. Je länger dieses Stück, desto genauer die Frequenz und desto ungenauer der Zeitpunkt. Das ist keine Frage des Aufwands, sondern eine Eigenschaft der Fourier-Transformation: Für ein Fenster der Länge N ist die Frequenzauflösung fest.

Δf = fs / N Bei 48 kHz Abtastrate und einem Fenster von 2048 Werten sind das 23,4 Hz, und gleichzeitig 42,7 ms, über die verschmiert wird.

23,4 Hz sind mehr als der Unterschied zwischen zwei Exemplaren desselben Geräts. Ein Fenster reicht also nicht. BeepHunt rechnet deshalb drei Auflösungen gleichzeitig, jede für die Aufgabe, für die sie taugt.

StromFensterFrequenzrasterZeitauflösungAufgabe
Schnell102446,9 Hz5,3 mswann genau ein Ton anfängt
Haupt204823,4 Hz10,7 msErkennung und Wiedererkennung
Fein409611,7 Hz21,3 msFrequenz genau bestimmen

Selbst das feinste Raster wäre noch zu grob. Die tatsächliche Frequenz liegt fast nie genau auf einem Rasterpunkt, aber die Hauptkeule eines Sinustons ist im logarithmischen Maßstab beinahe eine Parabel. Legt man eine Parabel durch den größten Punkt und seine beiden Nachbarn, ergibt deren Scheitel die Frequenz auf etwa ein Prozent eines Rasterschritts genau.

Dieselbe Fensterlänge verfälscht auch die gemessene Dauer: Ein Fenster sieht den Ton bereits, sobald er hineinragt, und noch, wenn er fast heraus ist. Jedes Ereignis misst sich dadurch zu lang, und zwar um einen konstanten Betrag, unabhängig davon, wie lang es wirklich war. Für das verwendete Fenster sind das 19,1 % seiner Länge. Zieht man sie ab, werden aus gemessenen 108 ms wieder die 100 ms, die das Gerät tatsächlich piept.

2 · Wann ist ein Ausschlag ein Ereignis?

Ein fester Schwellwert in Dezibel funktioniert nicht: In einer stillen Wohnung ist er zu hoch, neben einer Straße zu niedrig. BeepHunt misst deshalb nie absolut, sondern immer im Verhältnis zum Untergrund an derselben Stelle. Das Verfahren stammt aus der Radartechnik und heißt dort CFAR, nach der konstanten Falschalarmrate, die es sicherstellt.

Untergrund aus den Nachbarn, nicht aus der Vergangenheit
Prüfling REFERENZ REFERENZ SCHUTZ SCHUTZ Pegel Frequenz → rosa Untergrund fällt zu hohen Frequenzen hin ab

Der Schutzabstand verhindert, dass der Ton, den man messen will, seinen eigenen Untergrund anhebt.

Drei Einzelheiten daran tragen das ganze Verfahren:

EntscheidungWarum
Leistung mitteln, nicht Dezibel Dezibel zu mitteln bildet in Wahrheit das geometrische Mittel, und das liegt unter dem wahren Untergrund. Jeder Störabstand fällt dadurch zu gut aus. Diese eine Einzelheit war der Unterschied zwischen null und 1014 Fehlalarmen über zwölf Sekunden Rauschen.
Die größere Seite nehmen Raumuntergrund ist rosa, er fällt zu hohen Frequenzen hin ab. Ein symmetrisches Fenster über einer schrägen Kurve mittelt die beiden Seiten und liegt auf der lauten Seite zu tief. Das erfindet in den unteren zwei Oktaven dauerhaft 12 bis 13 dB Störabstand, die es nicht gibt.
Über die Frequenz, nicht über die Zeit Wer den Untergrund aus der Vergangenheit derselben Frequenz schätzt, verliert jeden Dauerton: Nach einer Minute ist die Vergangenheit dieser Ton, und er misst sich gegen sich selbst. Nur die Schätzung aus den Nachbarfrequenzen lässt ein Spulenfiepen dauerhaft herausragen.

Die Leistung einer Rauschzelle ist exponentialverteilt. Damit lässt sich ausrechnen, wie oft ein reiner Zufall die Schwelle reißt:

P(Überschreitung um T dB) = exp(−10T/10) Bei 12 dB sind das 1,3·10⁻⁷ je Zelle. Über 800 Zellen und 94 Bilder je Sekunde ergibt das etwa einen Fehlalarm alle zwei Stunden. Bei 9 dB wären es mehrere pro Sekunde.

3 · Ein Merkmal, das nicht mit der Lautstärke wandert

Der Schalldruck einer Punktquelle nimmt mit dem Abstand ab. Wer von fünf Metern auf einen halben herangeht, ändert den Pegel um rund 20 dB. Ein Wiedererkennungsmerkmal, das sich mit der Lautstärke verschiebt, würde also ausgerechnet dann nicht mehr passen, wenn man am dichtesten dran ist.

Die Lösung steckt in einer Rechenregel: Eine Verstärkung ist im Amplitudenmaß eine Multiplikation, im Dezibelmaß eine Addition. Zieht man vom Spektrum in Dezibel seinen eigenen Mittelwert ab, verschwindet genau dieser konstante Summand, und damit die Lautstärke, ohne dass die Form verlorengeht.

10·log(a·x) = 10·log(a) + 10·log(x) Der erste Summand ist die Entfernung. Mittelwert abziehen, und er ist weg.

Jedes andere Merkmal wird auf demselben Weg unabhängig gemacht: die Hüllkurve durch ihren eigenen Höchstwert, der Frequenzverlauf durch seinen Median, die Teiltöne relativ zum stärksten. Dauer und Harmonizität sind ohnehin pegelfrei.

Beim Vergleich zweier Aufnahmen wiegt die Frequenz am schwersten, denn der Schwinger, der die Tonhöhe eines Piepsers festlegt, ändert sich weder mit der Entfernung noch mit der Blickrichtung. Verglichen wird dabei die relative Abweichung: 30 Hz sind bei 12 kHz ein Rundungsfehler und bei 400 Hz ein anderer Ton. Hüllkurve und Dauer wiegen weniger, weil der Nachhall des Raums jedes Ereignis am Ende verschmiert. Dazu kommt, dass billige Piepser keine Uhr sind: Derselbe Wecker liefert 92 ms und Minuten später 104 ms, wenn sein Oszillator warm geworden ist.

4 · Rhythmus erkennen, wenn Schläge fehlen

Ein Gerät piept alle zwei Sekunden. Fährt ein Lastwagen vorbei, geht ein Piepen unter, und aus den Abständen wird 2,0 · 2,0 · 4,0 · 2,0. Der Median liegt weiterhin bei 2,0, aber die 4,0 treibt die Streuung so weit hoch, dass der Takt als unregelmäßig gilt und der Countdown abschaltet, und zwar genau dann, wenn man in einer lauten Umgebung steht und ihn am nötigsten braucht.

Deshalb werden Abstände gefaltet: Passt ein Abstand auf ein ganzzahliges Vielfaches der Grundperiode, wird er durch dieses Vielfache geteilt und wieder zugelassen. Aus 4,0 werden zwei Schläge von 2,0. Die Grundperiode selbst wird aus der kürzeren Hälfte der Abstände geschätzt, denn der Durchschnitt aller Abstände würde von jeder Lücke nach oben gezogen, und eine zu lange Grundperiode faltet nichts mehr richtig.

5 · Warum aus dem Pegel kein Abstand wird

Im Freifeld wäre es einfach: Der Pegel fällt mit dem Abstand, aus dem Pegel ließe sich der Abstand ausrechnen. In einem Zimmer gilt das nicht. Der direkte Schall überlagert sich mit den Reflexionen der Wände, und bei einem reinen Ton entsteht daraus ein festes Muster aus Maxima und Minima im Raum. Ihr Abstand ist eine halbe Wellenlänge.

λ/2 = c / (2f) ≈ 343 / (2 · 8000) ≈ 2,1 cm Bei 8 kHz liegen laut und leise also gut zwei Zentimeter auseinander. Zwei Schritte zur Seite können den Pegel umkehren, ohne dass man der Quelle näher gekommen ist.

Die App rechnet deshalb nie einen Abstand aus der Lautstärke aus. Sie sagt nur wärmer oder kälter, hat dafür einen toten Bereich von 1,5 dB und bittet darum, in mehreren kleinen Schritten zu gehen statt in einem großen. Zusätzlich merkt sie sich den besten bisher erreichten Wert: Wer daran vorbeigelaufen ist, sieht es.

6 · Richtung aus einem Laufzeitunterschied

Zwei Mikrofone im Abstand d hören dieselbe Schallwelle nacheinander. Weil die Quelle weit genug entfernt ist, um die Wellenfront als eben anzunehmen, hängt der Laufzeitunterschied nur vom Winkel ab.

θ = arcsin( c·τ / d ) c ist die Schallgeschwindigkeit, τ der gemessene Laufzeitunterschied, d der Mikrofonabstand. Null Grad ist quer zur Verbindungslinie.

Bei 48 kHz Abtastrate entspricht ein einzelner Abtastwert 7,1 mm Wegunterschied. Deshalb wird der Höhepunkt der Kreuzkorrelation zwischen den Abtastwerten interpoliert; erreicht werden besser als 0,4 Abtastwerte.

Zwei Grenzen sind dabei hart. Erstens: |c·τ| ≤ d muss gelten. Ein größerer Unterschied kann kein direkter Weg sein, sondern nur eine Reflexion. Er wird verworfen statt auf ±90° gekappt, was sonst bei jedem Zweifel eine selbstbewusste Peilung genau nach vorn oder hinten ergäbe.

Ebene Welle auf zwei Mikrofone
A B d c·τ θ Wellenfront

Zweitens: Eine reine Phasenmessung ist nur eindeutig, solange der Mikrofonabstand höchstens eine halbe Wellenlänge beträgt. Darüber wiederholt sich das Bild.

feindeutig = c / (2d) ≈ 343 / (2 · 0,13) ≈ 1,3 kHz Ein Telefon mit 13 cm zwischen den Mikrofonen ist also nur bis etwa 1,3 kHz eindeutig. Fast jedes gesuchte Piepen liegt darüber.

Ein schmalbandiger Ton erzeugt darum eine Korrelation, die im Takt seiner eigenen Frequenz schwingt und alle 1/f fast gleich hohe Gipfel hat. Den höchsten zu nehmen heißt, einen beliebigen zu nehmen. Das ergibt Peilungen, die um Dutzende Grad danebenliegen und dabei sehr überzeugt wirken. BeepHunt bildet deshalb zusätzlich die Einhüllende der Korrelation. Sie schwingt nicht mit, ihre Breite hängt an der Bandbreite statt an der Mittenfrequenz, und sie zeigt, welcher Gipfel der richtige ist. Erst innerhalb dieses Gipfels liefert die eigentliche Korrelation die Feinheit.

Was auch das nicht auflöst: Zwei kugelförmig empfangende Mikrofone messen genau eine Zahl, und eine Zahl kann keine Richtung im Raum festlegen. Jede Peilung ist in Wahrheit ein Kegel um die Verbindungslinie; in der Ebene bleibt davon eine Zweideutigkeit zwischen vorn und hinten. Die App nennt beide Möglichkeiten und schlägt zwei Schritte zur Seite vor, statt eine davon zu wählen und in der Hälfte der Fälle falsch zu liegen.

Und schließlich hängt alles an einer Größe, die kein Sensor misst:

c(T) = 331,3 + 0,606 · T [m/s, T in °C] Zwischen einer 5 °C kalten Garage und einem 25 °C warmen Zimmer sind das 3,5 %, und die schlagen unmittelbar auf jeden Winkel durch. Deshalb gibt es dafür eine Einstellung.

7 · Zwei Telefone: erst die Uhr, dann der Ort

Zwei Telefone hören dasselbe Piepen zu verschiedenen Zeitpunkten, und aus dem Unterschied ließe sich der Ort bestimmen. Vorher steht allerdings ein Problem, das größer ist als der zu messende Effekt: Die Audio-Uhren zweier Geräte haben nichts miteinander zu tun. Solange ihr Verhältnis nicht gemessen ist, ist ein Zeitunterschied zwischen ihnen nicht ungenau, sondern bedeutungslos.

Zwei nominell gleiche 48-kHz-Quarze weichen typischerweise um einige zehn Millionstel voneinander ab. 25 ppm sind nach zwei Minuten 3 ms, umgerechnet gut ein Meter Wegunterschied, bei einer Messung, deren gesamtes Nutzsignal einige hundert Mikrosekunden beträgt.

tB = a · tA + b b ist der Versatz beim Start, a der Gangunterschied der Quarze. Beides muss gemessen werden, bevor irgendetwas verglichen wird.

Gemessen wird mit Schall, nicht über das Netzwerk: WLAN-Laufzeiten schwanken im Millisekundenbereich und sind in beide Richtungen unterschiedlich. Sie würden das Ergebnis verschieben und nicht bloß streuen. Der Raum dagegen ist die einzige Uhr, die beide Geräte wirklich teilen. Jedes Telefon spielt einen kurzen Wischton ab, beide hören beide. Aus den zwei Richtungen folgen zwei Gleichungen:

Versatz = (D₁ − D₂) / 2 Laufzeit = (D₁ + D₂) / 2 Der Versatz der Uhren und der Abstand der Geräte fallen aus derselben Messung heraus. Weil jedes Gerät seinen eigenen Ton selbst hört, statt sich auf den Abspielbefehl zu verlassen, kürzt sich auch die gerätespezifische Ausgabeverzögerung heraus.

Der Kalibrierton ist ein logarithmischer Wisch von 2 auf 10 kHz in 60 ms. Ein Knacks hätte die schärfste Autokorrelation, bräuchte dafür aber eine hohe Spitzenamplitude. Ein Tonstoß wäre leise und unauffällig, korreliert aber mit sich selbst um ganze Perioden verschoben, bei 4 kHz alle 0,25 ms, also alle 8 cm scheinbarer Entfernung. Ein Wisch verteilt seine Energie über die Zeit und bleibt dadurch leise, hat aber die Bandbreite, die eine scharfe Antwort braucht.

Erst danach beginnt die eigentliche Ortung. Der Zeitunterschied zwischen zwei Empfängern legt die Quelle auf eine Hyperbel fest: alle Punkte, deren Abstandsdifferenz gleich bleibt. Mit zwei Geräten ist das das ehrliche Ergebnis, und die App zeichnet die Kurve, statt einen Punkt zu behaupten. Erst ein drittes Mikrofon liefert eine zweite Hyperbel und damit einen Schnittpunkt.

Zwei Geräte ergeben eine Kurve, drei einen Bereich
ZWEI GERÄTE A B alle Orte mit derselben Abstandsdifferenz DREI GERÄTE Unsicherheit als Fläche, nicht als Punkt

Die Unsicherheit entsteht nicht aus einer Formel, sondern indem jede Messung 160-mal im Rahmen ihrer eigenen Streuung verwürfelt und neu gelöst wird. Stehen die Geräte fast auf einer Linie, wird daraus eine lange dünne Sichel, und diese Form ist zugleich die Anweisung, ein Telefon zu versetzen.

8 · Was die App ausdrücklich nicht behauptet

Der wertvollste Teil einer Messung ist die Angabe, wo sie aufhört. Diese Liste steht so auch in der Projektdokumentation.

Nicht behauptetWeil
Abstand aus der Lautstärke Stehende Wellen machen den Pegel im Raum nicht monoton mit der Entfernung.
Vorn oder hinten aus zwei Mikrofonen Ein Laufzeitunterschied ist eine Zahl und kann keine Richtung im Raum festlegen.
Ein Punkt aus zwei Geräten Ein Zeitunterschied ergibt eine Hyperbel, keinen Ort.
Eine Ortung aus Geräten in einer Reihe Die Aufstellung ist schlecht konditioniert; der Fehler rutscht entlang der Linie davon.
Eine Peilung aus einer halben Drehung Nicht besuchte Sektoren bleiben leer, statt dazwischen ergänzt zu werden.
Welches Gerät da piept Ein Ton ist ein Ton. Aus ihm ein Fabrikat abzuleiten wäre geraten. Die App beschreibt die Wellenform, etwa „kurzer hoher elektronischer Ton“.
Dass ein Signal harmlos ist Niemals. Klingt ein Geräusch nach einem Warngerät, weist die App neutral darauf hin und sagt sonst nichts. Eine falsche Beruhigung über einen Rauch- oder CO-Melder träfe den Nutzer, nicht mich.
Ausbaustufen

Was das Gerät hergibt, entscheidet

Android-Audiohardware ist sehr verschieden, und kein Datenblatt beschreibt sie zuverlässig. Statt eine Mindestausstattung zu verlangen, ist die App als Leiter gebaut: Die unterste Stufe braucht ein Mikrofon und trägt für sich allein. Jede weitere kommt hinzu, wenn die Voraussetzung wirklich erfüllt ist.

1 Suchen und verfolgen erkennen, wiedererkennen, wärmer und kälter, Bestwert, Geräusche merken ein Mikrofon
2 Radar-Sweep auf der Stelle drehen, wahrscheinlichen Sektor bekommen Drehratensensor
3 Peilung aus den Gerätemikrofonen Richtung aus dem Laufzeitunterschied zwei wirklich getrennte Kanäle
4 Peilung über Kopfhörer dasselbe mit Stereo-Mikrofonen am Ohr LE-Audio mit Stereoeingang
5 Richtung mit zwei Telefonen Kurve statt Punkt, dazu ein Richtungsband zweites Android-Gerät im Netz
6 Ortung in der Fläche Schnittpunkt mit Unsicherheitsellipse drei verteilte Mikrofonorte
7 Dritter Ort durch Versetzen Rechenweg steht, die geführte Bedienung fehlt noch zwei Telefone, eines wird versetzt

Die Regel darüber lautet: Keine Stufe darf eine tiefere verschlechtern. Stellt sich das Stereosignal als Mischung eines einzigen Mikrofons heraus, bleibt wärmer und kälter genau so gut wie vorher. Bricht die Verbindung zum zweiten Telefon mitten in der Suche ab, läuft die Einzelgerätesuche weiter, ohne dass ein Fenster aufgeht.

Diese Prüfung ist kein Formalismus. Hersteller liefern Stereoaufnahmen aus, bei denen beide Kanäle aus derselben Aufbereitung stammen. So ein Signal korreliert bei jedem Ereignis perfekt bei null Verzögerung, und eine gutgläubige Auswertung macht daraus eine bombenfeste Peilung von 0°, immer geradeaus, egal wo die Quelle steht. Entscheidend ist deshalb nicht die Höhe der Korrelation, sondern die Streuung der gemessenen Verzögerungen: Zwei echte Mikrofone in einem echten Raum sehen Werte, die sich bewegen. Zwei Kanäle aus einer Quelle nicht.

Aufbau

Wo die Rechnerei liegt

Kotlin, Compose für die Oberfläche, sonst nichts Fremdes im Rechenkern. Die Signalverarbeitung liegt bewusst in einem eigenen Baustein ohne jeden Android-Bezug.

BausteinInhalt
Rechenkern Reines Java-Modul: Fourier-Transformation, Untergrundschätzung, Fingerabdrücke, Korrelation, Geometrie, Ausgleichsrechnung. Kein Android, kein Compose. Dadurch ist er in Millisekunden testbar, und die Schichtregel wird vom Bauwerkzeug erzwungen statt von der Disziplin.
Aufnahme Mikrofonzugriff, Ringspeicher, Prüfung der Gerätefähigkeiten.
Plattform Sensoren, Abstandsmessung, Verbindung zum zweiten Telefon über den Namensdienst und eine einfache Verbindung im eigenen Netz. Kein Fremddienst, damit die Funktion nicht an einem Dienst hängt, den nicht jedes Gerät hat.
Ablauf Die Suche lebt in der Anwendung, nicht in einem Bildschirm: Eine Jagd auf ein Piepen, das einmal pro Minute kommt, muss ein Drehen des Geräts überleben.

Der Aufnahmefaden schreibt nur Werte in den Ringspeicher und blockiert nie. Der Auswertefaden liest in seinem eigenen Tempo, und wenn er nicht hinterherkommt, springt er vor und meldet das, statt den Schreiber aufzuhalten oder zusammengesetzten Ton zu lesen. Eine Lücke kostet ein Ereignis; verfälschter Ton erzeugt selbstbewussten Unsinn.

98 Tests

Alle auf der Java-Seite, Durchlauf rund 14 Sekunden. Geprüft wird gegen künstlich erzeugte Signale: Piepen bei 1 und 8 kHz, 25 dB Pegelunterschied, zwei Quellen gleichzeitig, Sprache und Musik als Störung. Und Stille, wenn nur Rauschen anliegt.

Der Prüfton kommt aus der App

Der Signalgenerator liegt nicht im Testordner, sondern im Programm selbst. Die Diagnoseansicht sendet damit denselben Referenzton, gegen den die Tests laufen.

Ab Android 9

Erst ab dieser Fassung meldet das System, wo die Mikrofone eines Geräts sitzen. Ohne diese Angabe lässt sich aus einem Laufzeitunterschied kein Winkel machen.

Mikrofon

Was mitgehört wird und was damit passiert

Eine App, die zuhört, muss dazu etwas sagen können. Der Ton wird ausschließlich auf dem Gerät ausgewertet.

  • Das Mikrofon läuft nur während einer Suche, die man selbst gestartet hat.
  • Der Ton liegt in einem Ringspeicher im Arbeitsspeicher und wird am Ende der Suche verworfen. Auf den Datenträger geschrieben wird er nicht.
  • Gespeichert werden nur abstrakte Merkmale: Frequenzen, Dauern, Wiederholungsabstände, spektrale Formen.
  • Nichts wird hochgeladen. Kein Konto, keine Analyse-Werkzeuge, keine Werbebausteine.
  • Bei einer Suche mit zwei Telefonen gehen kurze Ausschnitte von etwa 0,25 Sekunden um eine bestätigte Erkennung herum über das lokale Netz. Kein durchgehender Tonstrom, und über keinen fremden Server.
  • Keine Kamera, keine Kontakte, kein Standort.
Stand

Wo das Projekt gerade steht

Angelegt am 16. August 2026. Der Rechenkern und die Prüfstände laufen, die Bedienung steht. Was fehlt, ist alles, was sich nur an echter Hardware in echten Räumen klären lässt.

Erledigt

Rechenkern

Drei Auflösungen gleichzeitig, Untergrundschätzung, Ereigniserkennung, Fingerabdrücke, Gruppierung, Rhythmus, Zielverfolgung.

Erledigt

Richtungsbestimmung

Korrelation mit Einhüllenden-Auswahl, Winkelbestimmung samt physikalischer Schranke, Zusammenfassung über viele Ereignisse mit Kreisstatistik, Prüfung der Kanalunabhängigkeit.

Erledigt

Mehrgeräte-Rechenweg

Uhrenabgleich über Wischtöne, akustische Abstandsmessung, Ortung mit Rastersuche vor der Verfeinerung und Unsicherheit durch Verwürfeln. Vollständig gegen künstliche Signale geprüft.

Läuft

Oberfläche und Feinschliff

Die Bildschirme stehen: Suche, Verfolgung, Sweep, Raumortung, gespeicherte Geräusche, Diagnose. Die geführte Bedienung für den versetzten dritten Ort fehlt noch.

Offen

Echte Geräte

Die Mehrgeräte-Funktionen sind noch nie mit zwei Telefonen in einem echten Raum gelaufen. Sie sind deshalb in der App als experimentell gekennzeichnet. Auch die Verträglichkeitstabelle für Audiohardware ist angelegt und noch leer. Sie füllt sich aus Diagnoseberichten.

Danach

Veröffentlichung

Erst wenn die Suche auf fremden Geräten so zuverlässig läuft wie auf meinen. Der Name ist bis dahin vorläufig.

Fragen zu diesem Projekt?

Wie etwas gebaut ist, warum es so gebaut ist, ob es sich auf einen anderen Fall übertragen lässt – schreib einfach. Die Nachricht geht als E-Mail an mich, sonst passiert damit nichts.

Rechenaufgabe Rechenaufgabe als Bild

Kein Google-Captcha, keine Weitergabe an Dritte, keine Cookies. Die Rechenaufgabe wird von diesem Server gezeichnet und geprüft. Wenn sie nicht lesbar ist oder das Formular klemmt: info@timobritz.de geht genauso.