Soundaufnahme oder Frequenzzähler in VB 2008

Hallo zusammen,

ich suche schon lange nach einer Möglichkeit entweder eine WAV-Datei über den Soundkarteneingang aufzunehmen oder die Frequenz an dem Eingang zu ermitteln.

Bisher habe ich jeglich veraltete C+±Sourcen gefunden…

Ich würde mich über Antworten sehr freuen.

MfG
CodeFetch

Hi!
Du hast 2 Möglichkeiten:

  • Managed DirectX (DirectSound)
  • Verwenden von z.B. des WinMM API über P/Invoke

In VB.NET hab’ ich zwar nichts, aber vll. hilft Dir ja auch ein C# Artikel weiter:
http://www.codeproject.com/KB/audio-video/cswavrec.aspx

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Du hast 2 Möglichkeiten:

  • Managed DirectX (DirectSound)
  • Verwenden von z.B. des WinMM API über P/Invoke

In VB.NET hab’ ich zwar nichts, aber vll. hilft Dir ja auch
ein C# Artikel weiter:
http://www.codeproject.com/KB/audio-video/cswavrec.aspx

den kenn ich schon… der hat mir nicht wirklich weitergeholfen…
ich habe eine lösung gefunden, ich weiss nur nicht mehr woher ich sie hab…

für die leute die es interessiert, habe ich es mal geuploadet:
Form1 ist ein Beispiel zur Einbindung
http://vininc.de/.soundrecord.zip

Hallo nochmal!
Die Klasse SSVoiceRecordCtrl in den hochgeladenen Sourcen nutzt halt MCI zur Ansteuerung des Audiogeräts, aber wie das mit MCI eben so ist: Es ist eine recht einfache Schnittstelle, bei der man keinen direkten Zugriff z.B. auf die gesampelten Audiodaten hat, anders als bei den von mir vorgeschlagenen Wegen.
(Und der Autor hat offenbar von strukturierter Fehlerbehandlung auch noch nichts gehört: On Error Goto ER - bäh!)

Du hast also jetzt mehrere Möglichkeiten, Sounds aufzunehmen. Kommst Du dann klar oder brauchst Du noch was?

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die Klasse SSVoiceRecordCtrl in den hochgeladenen Sourcen
nutzt halt MCI zur Ansteuerung des Audiogeräts, aber wie das
mit MCI eben so ist: Es ist eine recht einfache Schnittstelle,
bei der man keinen direkten Zugriff z.B. auf die gesampelten
Audiodaten hat, anders als bei den von mir vorgeschlagenen
Wegen.
(Und der Autor hat offenbar von strukturierter
Fehlerbehandlung auch noch nichts gehört: On Error Goto ER -
bäh!)

Du hast also jetzt mehrere Möglichkeiten, Sounds aufzunehmen.
Kommst Du dann klar oder brauchst Du noch was?

hallo martin,

ich müsste es irgendwie noch schaffen aus der fertigen wav-datei die geräuschlosen stellen zu entfernen, sodass ich nur noch 2 und 4khz-töne habe… vielleicht weisst du ja rat?!

Hi!
Die „geräuschlosen Stellen“ zu entfernen ist vermutlich noch relativ einfach machbar. Z.B. Audiodatei einlesen und blockweise über die Audiodaten 'drüberlaufen. Für jeden Block die Durchschnittslautstärke berechnen (je nach Format (signed/unsigned, 8/16bit) etwas unterschiedlich) und, wenn die Lautstärke unter dem gewünschten Schwellwert ist, den Block verwerfen. Anderenfalls den Block in die Ausgabedatei schreiben.
Eine Klasse zum Behandlen von WAV-Dateien findet sich m.W. nach auch auf CodeProject (evtl. sogar bei dem bereits geposteten Link zum Audiorecorder). Wie Du die Lautstärke ermittlest findest Du mit ein wenig googeln raus.

Wenn Du jetzt aber noch bestimmte Frequenzbereiche rausfiltern willst, wird’s kompliziert. Dann müsstest Du eine FFT machen, um an die einzelnen Frequenzbänder zu kommen.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]