Zugriff auf Soundkarte mit C#

Gast #3338268
Lesenswert?

Servus,

ich habe folgende Fragestellung:

Wie komme ich an die aktuellen Werte des Mikrofon-Eingangs meines PC 
mithilfe von Visual C#? Ich möchte die Werte einlesen, um mir später 
über eine DFT oder eine FFT die Werte anzeigen lassen. Dieses Projekt 
hat bisher keine spezielle Aufgabenstellung, vielmehr möchte ich einen 
Einstieg in die digitale Signalverarbeitung erhalten.

Hat jemand sowas vielleicht schon einmal gemacht?

Viele Grüße
Paul
Gast #3338320
Lesenswert?

Du kannst Dir die winmm.dll von der Windows-Api reinziehen.
Da sind die Funktionen drin und müssen in C# nur bekannt gemacht werden 
mit:
1
[DllImport("winmm.dll")]
2
    public static extern int waveInStart(IntPtr hWaveIn);
3
[DllImport("winmm.dll")]
4
    public static extern int waveInStop(IntPtr hWaveIn);
5
[DllImport("winmm.dll")]
6
    public static extern int waveInReset(IntPtr hWaveIn);

Zum Aufzeichnen benutzt man waveInStart.
Da wird ein buffer gefüllt mit Samples.
Wenn er voll ist (die Größe bestimmst Du!, auch Sample-Rate, ...), dann 
wird eine von Dir bereitgestellte Callback-Funktion aufgerufen.
Da kannst Du die DFT-Berechnungen vornehmen.
Eigentlich werden 2 Buffer benötigt, die abwechselnd gefüllt werden und 
verarbeitet werden.

Es gibt vielleicht eine schnellere und elegantere Methode, aber da ich 
das schon seit Windows 95 - Zeiten so mache, bin ich nie umgestiegen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren