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
Sorry, ich möchte mir nach der DFT natürlich nicht die Werte anzeigen lassen, sondern die verschiedenen Spektren. Gruß Paul
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.