Toon posts:

[Java] Hertz meten

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zou graag een Java programma willen maken dat hertzen kan meten.
Er wordt dan een .wav'je geladen met een vast aantal hertz (gemaakt met een sinus-toon generator) waarna het aantal hertz op je beeld verschijnt.

Helaas lukt het niet :'(
Ik weet dat je gebruik moet/kunt maken van JavaSound. Hiermee zou je dan een timer kunnen laten lopen terwijl de pieken worden geteld...

Heeft iemand misschien een voorbeeld?

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
Je moet maar eens zoeken naar FFT, Fast-Fourier-Transformation

/me weet geen leuke quote voor in zijn signature


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

FFT is idd de manier, maar ik denk een beetje overkill bij een simpele sinusgolf :)

Toverstaf: zoals je zelf al aangaf kun je ook gewoon pieken tellen... je gaat door je geluidsdata heen, en elke keer als de flank van omhoog naar omlaag gaat heb je een piek gevonden. Je hoeft natuurlijk maar 2 pieken te vinden en de tijd ertussen te berekenen en je hebt de frequentie van de golf (1 / tijd).

.edit: waarom je gebruik zou moeten maken van JavaSound ontschiet me even... Misschien handig om een wavje in te laden, maar het bestandsformaat is vrij simpel (en te vinden op bijvoorbeeld www.wotsit.org)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Op woensdag 05 juni 2002 17:25 schreef .oisyn het volgende:
FFT is idd de manier, maar ik denk een beetje overkill bij een simpele sinusgolf :)

Toverstaf: zoals je zelf al aangaf kun je ook gewoon pieken tellen... je gaat door je geluidsdata heen, en elke keer als de flank van omhoog naar omlaag gaat heb je een piek gevonden. Je hoeft natuurlijk maar 2 pieken te vinden en de tijd ertussen te berekenen en je hebt de frequentie van de golf (1 / tijd).
Ik heb gezocht op FFT, maar dit is gewoon té overkill :)
Eigenlijk wil ik gewoon de pieken gaan tellen, maar ik heb geen idee hoe je dit moet doen / aanpakken.
Ik heb wel al een programma gevonden (CapturePlayback.java). Met dit programma neem je iets op, en hij maakt er een grafiek van. Met een sinus signaal wordt er dus ook echt een sinus getekend.

het programma is hier te vinden:
Geluid java files

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

kijk ook nog even naar mijn edit :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 06-09 19:42
Niet verder lezen als je het zelf wil uitdenken.

Het lijkt mij een stuk makkelijker om het passeren van de evenwichtsstand waar te nemen dan een piek, in de situatie dat er wat storing door je sinus heen zit.

Je maakt dan gebruik van een soort softwarematige Schmidt trigger (een trigger met drempelwaarde), die registreert of je in de eerste (grafiek boven 0) of tweede fase van je sinusgolf (grafiek onder 0) zit. Door het verschil tussen een aantal (zo niet alle) omslagen te middelen, kun je de werkelijke frequentie redelijk nauwkeurig bepalen.
Pagina: 1