Forum: PC-Programmierung Virtuellen Soundkartentreiber für Windows schreiben


von Paul H. (powl)


Lesenswert?

Hi,

ich muss mir für mein Vorhaben einen virtuellen Soundkartentreiber 
schreiben. Dieser soll eine einfache Stereosoundkarte emulieren. Der 
Audiostream Kanal L und R soll dann diversen DSP-Effekten (Tiefpass, 
Hochpass, Parametrischer Equalizer, Laufzeitkorrektur) unterzogen werden 
und dann auf einer externen 5.1 Soundkarte wieder ausgegeben werden.

Wie kann ich das schaffen? Ich hab 3 Monate Zeit, theoretisch länger, 
aber in 3 Monaten fängt die Theoriephase meines Studiums wieder an und 
da sollte die Kiste so langsam laufen.

Ich habe Grundkenntnisse in C#. Ich denke mal Treiberprogrammierung ist 
mit .NET nicht möglich? Oder doch? Lieber mal in C++ einarbeiten 
(schaden würds nicht! C++ könnte ich an vielen stellen gebrauchen um 
hardwarenäher als in C# zu arbeiten, wenns mal auf Speed ankommt)

Wo kriege ich das benötigte Wissen her um sowas zu realisieren? (Ja ich 
werde Googeln aber vielleicht hat jemand einen Tipp :) )

lg PoWl

von ... (Gast)


Lesenswert?

Paul Hamacher schrieb:
> Ich hab 3 Monate Zeit

Und dazu Null Ahnung von C/C++? Auweia, das wird knapp.

Paul Hamacher schrieb:
> Wo kriege ich das benötigte Wissen her um sowas zu realisieren?

Z.B. hier:
http://msdn.microsoft.com/en-us/windows/hardware/gg454508

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

http://jackaudio.org/

Matthias

von bluppdidupp (Gast)


Lesenswert?

Wenn die Audio-Quelle nur Software ist die DirectShow benutzt, würde es 
auch reichen einen DirectShow-Filter zu schreiben.

Wirklich nen eigenen virtuellen Soundkartentreiber schreiben ohne da 
vorher schonmal was in Sachen Treiberprogrammierung gemacht zu haben 
dürfte sehr sehr eng werden.
Einstiegspunkt wäre: 
http://msdn.microsoft.com/en-us/windows/hardware/gg487463
...da sind auch Beispiel-Treiber für alle möglichen Devices drin (die 
allerdings nicht wirklich tief gehen)

von Paul H. (powl)


Lesenswert?

Wie ich das ganze realisier ist letzendlich egal, hauptsache ich kann 
den Stereo-Sound durch die DSP-Effekte jagen und hinterher auf 5 Kanäle 
richtig verteilen (2 mal Hochtöner, 2 mal Tiefmitteltöner, 1 mal 
Subwoofer, ist fürn Car-PC).

DirectShow-Filter? Ist es nicht so, dass sowieso die ganze Soundausgabe 
jedes Standard-Programms (eigentlich geht es mir hier nur um einen 
selbstgeschriebenen MP3player, VLC-Player, Webbrowser..) sowieso über 
DirectX (DirectShow?) läuft?

Dann könnte ich mir die Treiberprogrammierung sparen und würde mich in 
die Programmierung eines solchen DirectShow Filters einarbeiten.

Grundkenntnisse in C und OOP sind natürlich vorhanden. Von 0 muss ich 
nicht anfangen aber bisher habe ich noch nichts großes gemacht.

@Matthias, Jackaudio klingt interessant, werd ich mich mal reinlesen!

lg PoWl

von Arc N. (arc)


Lesenswert?

Paul Hamacher schrieb:
> Hi,
>
> ich muss mir für mein Vorhaben einen virtuellen Soundkartentreiber
> schreiben. Dieser soll eine einfache Stereosoundkarte emulieren. Der
> Audiostream Kanal L und R soll dann diversen DSP-Effekten (Tiefpass,
> Hochpass, Parametrischer Equalizer, Laufzeitkorrektur) unterzogen werden
> und dann auf einer externen 5.1 Soundkarte wieder ausgegeben werden.

Ein normales Audiokabel mit 3.5mm Klinkensteckern von Out->In reicht 
nicht?
Wenn's nicht zu lange dauern soll, gibt's das auch fertig
http://software.muzychenko.net/eng/vac.htm

von thomas (Gast)


Lesenswert?

Schau die mal BASS24 (http://www.un4seen.com/) an. Da gibt es auch 
samples für C#.
ich habe damit 8 verschiedene Mp3s zugleich ausgegeben, auf jedem Kanal 
(7.1) einen. Wahrscheinlich kannst du damit deine Hoch, Mitten und 
Subwoofer auch getrennt ansteuern.
Probiers mal

Thomas

von Paul H. (powl)


Lesenswert?

Danke für die weiteren Antworten :) Die Soundkarte, die ich verwenden 
werde, wird leider keinen Eingang zum Aufnehmen haben, daher muss ich 
das irgendwie virtuell machen.

Der Sound muss auf jeden Fall vom System abgefangen und dann auf dieser 
einen Soundkarte wieder ausgegeben werden (und zuvor halt die ganzen 
DSP-effekte durchlaufen)

von Arc N. (arc)


Lesenswert?

Paul Hamacher schrieb:
> Danke für die weiteren Antworten :) Die Soundkarte, die ich verwenden
> werde, wird leider keinen Eingang zum Aufnehmen haben, daher muss ich
> das irgendwie virtuell machen.

Irgendwo muss doch das Eingangssignal herkommen...
Entweder
Signal -> AD -> Stream -> Anwendung (die div. Effekte) -> Stream/s -> DA
oder
Stream/File -> Anwendung ...
Stream/File kann bei DirectShow alles mögliche sein
http://www.gdcl.co.uk/building.htm
http://www.gdcl.co.uk/dshow.htm
https://github.com/rdp/directshow-demo-audio-input-source
http://www.codeproject.com/KB/audio-video/DSound_Spectrum3.aspx
http://www.codeproject.com/KB/audio-video/Circular_Buffers.aspx

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.