# Einfachen Ton erkennen



## the asker (2. Mrz 2007)

Räusper...
Nun möchte einen ganz einfachen und primitiven Ton erkennen.

Es handelt sich zum Beispiel um einen 2100 hz- Ton.
Der Ton läuft 3 Sekunden lang.

Nun soll die Function mir 2100 und 3 zurückgeben.
Es läuft nur _ein_ Ton zurzeit.

Wie mache ich das in Java?
Wäre echt toll, wenn das so ginge!


Euer
the asker


----------



## André Uhres (3. Mrz 2007)

the asker hat gesagt.:
			
		

> ..Wie mache ich das in Java?..


Die Inselbewohner waren schon immer gut in Musik. Frag sie doch einfach mal.


----------



## Marco13 (3. Mrz 2007)

Genauso, wie in dem Codeschnipsel, den ich zu deiner Frage zu "Ton abspielen" gepostet habe, nur umgekehrt. Wenn du aber in deinem Programm einen Ton mit einer bestimmten Frequenz abspielen willst, und den dann grabben willst, um rauszufinden, welche Frequenz der hat, kannst du auch gleich die Frequenz nehmen, die du an anderer Stelle als Eingabe verwendet hast :wink:
Wenn du dir die Klassen und dazugehörigen Tutorials des oben erwähnten Beispiels ansiehst, wirst du sehen, dass man damit auch datan _aufzeichnen_ kann. Irgendwo hast du dann einen Daten-Array, in dem der Ton gespeichert ist. (Ob überhaupt was vom Mikrofon ankommt, während er den anderen Ton abspielt, sei mal dahingestellt). Du wirst den Ton aber sowieso nur _raten_ können. Oder welche Ausgabe würdest du erwarten, wenn du dir das Mikrofon schnappst, und dort mal sowas wie "Hallo, Welt" reinsprichst?


----------



## theasker (3. Mrz 2007)

Ein Auftakt zur Spracherkennung sollte das nicht werden!
Ein simpler, synthetisch hergestellter Ton soll eben erkannt werden.
Das Programm erzeugt den Ton sicherlich nicht.

Kennt jemand einen praktischen Weg dies zu erreichen?


the asker


----------



## Wildcard (3. Mrz 2007)

http://www.drohm.de/tuned/index.html
Bin aber nicht sicher ob der Quellcode erhältlich ist.


----------



## André Uhres (5. Mrz 2007)

Wildcard hat gesagt.:
			
		

> http://www.drohm.de/tuned/index.html..


Tolles Tool, ich spiele nämlich Gitarre  :wink:  :toll:


----------



## Wildcard (5. Mrz 2007)

André Uhres hat gesagt.:
			
		

> Tolles Tool, ich spiele nämlich Gitarre  :wink:  :toll:


Gern geschehen, ich war auch sehr begeistert  :wink:


----------



## virtualAudio (18. Mrz 2007)

Hi, 
es gibt verschiedene Möglichkeiten aus dem Zeitsignal rauszuchecken was frequenzmäßig darin abgeht. 

Such nach "FFT" oder "Autokorrelation". Das sind wohl die einfachsten Möglichkeiten auf die Tonhöhe zu kommen.

Bei der FFT transformierst Du von einer Zeit ("Lautstärke" über d Zeit aufgetragen) in eine Frequenzdarstellung ("Lautstärke" über Frequenz aufgetragen). Dort kannst Du dann schaun welche Deine "lauteste" Frequenz war.

Bei der Autokorrelation vergleicht man das Audiosignal mit einer ind er Zeit verschobenen Kopie von sich selbst. Da Dein Synthi-ton periodisch ist sind sich die Signale irgendwann (nach einer Verschiebung um eine Periode) wieder sehr ähnlich.

Das Wort "Lautstärke" hab ich deshalb immer in Anführungszeichen gesetzt, weil es hier eigentlich fehl am Platz ist. Wie laut etwas wahrgenommen wird hängt von vielen Dingen ab. Hier gehört eher "Druck" oder ähnliches her, aber "Lautstärke" ist intuitiver für jene die sich noch nicht viele Gedanken über Schall gemacht haben.

lg Andi


----------

