Hy,
wenn ich das richtig verstanden habe möchtest Du keine WAV aufnehmen und analysieren, sondern die Daten in echtzeit analysieren und wieder wegschmeißen.
Falls die AudIO Componente von John Mertus ist sollte dies damit kein Problem sein.
Du setzt die Eigenschaften BufferSize, FrameRate, NumBuffers, Quantisation und Stereo und schon kanns losgehen in dem Du das Ereignis OnBufferFilled auswertest.
Zuerst aber ein bischen Theorie.
Ich würde die Parameter wie folgt setzen
FrameRate: 8000
NumBuffers: 4 // 4 Buffer, damit während der Auswertung weiter aufgezeichnet wird
Quantisation: 8 // 8 Bits
Stereo : false // Du hast nur einen Kanal
So jetzt hast Du 8000 Bytes pro Sekunde, jedes Byte entspriched also
125 µs. Du musst noch einen Schwellwert zwichen 0 und 255 festlegen.
Leider lässt sich an Deiner Grafik die Zeitbais nicht genau erkennen. Ich vermute aber, dass Du mit einer BufferSize von 1000 = 125 ms hinkommen müsstest.
Im Ereignis AudioinBufferFilled solltest Du den Buffer auf ein PByteArray casten. Dann kannst Du einfach indiziert auf die Daten zugreifen.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function TMainform.AudioinBufferFilled(Buffer: PChar; var Size: Integer): Boolean; var P:ByteArray; begin P:=Pointer(Buffer);
... end; |