Forum: PC-Programmierung Zugriff auf Soundkarte mit C#


von Programmierer (Gast)


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

von Programmierer (Gast)


Lesenswert?

Sorry,

ich möchte mir nach der DFT natürlich nicht die Werte anzeigen lassen, 
sondern die verschiedenen Spektren.

Gruß
Paul

von STK500-Besitzer (Gast)


Lesenswert?

Guck dir mal DirectX an.

von Renesas (Gast)


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.

von mar IO (Gast)


Lesenswert?

Weil's mich selber interessiert hat, habe ich schnell danach das I-Net 
durchstöbern lassen. Mit dem ersten Treffer gleich ein schönes Beispiel 
gefunden und Erklärungen...:

http://channel9.msdn.com/coding4fun/articles/NET-Voice-Recorder

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.