Audio-Output eines Programmes steuern
-
Hi Leute!
Ich würde gerne wissen, ob und wie es möglich ist die Audioausgabe auf bestimmte Ausgänge der Soundkarte zu legen.Ein Beispiel:
Der Windows Media Player soll den Sound über den Rear-Ausgang ausgeben.
Dagegen soll meine TV-Kartensoftware den Sound über den Front ausgang ausgeben.Ich hoffe durch das Beispiel wurde klar, was ich meine.
Wenn ich mich nicht klar ausgedrückt hab, sagts mir!
-
Ich würde gerne wissen, ob und wie es möglich ist die Audioausgabe auf bestimmte Ausgänge der Soundkarte zu legen.
Das ist kein Problem.
Der Windows Media Player soll den Sound über den Rear-Ausgang ausgeben.
Dagegen soll meine TV-Kartensoftware den Sound über den Front ausgang ausgeben.Das ist ein Problem.
Wenn du 2 soundkarten hast, gibts auch min. 2 audio wiedergabe geräte, musst dann einfach nur die auswählen die du gern hättest. Das was du da vor hast läuft aber alles über 1 soundkarte.
Das erste was du machen solltest: beschäfitge dich mal mit DirectSound.
Dann sieh dir dieses bsp. an: http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/htm/play3dsoundsample.asp
Ist ein sample das dir zeigt wie du 3D sound ausgeben kannst.
Und jetzt geht los
Um das machen zu können was du willst brauchst du als erstes nen audio-output driver. Den baust du so, das er 2 audio wiedergabe geräte anbietet.
Intern rechnest du dann die 2 eingänge in 3D sound um, legst eingang 1 nach hinten, eingang 2 nach vorne und reichst das ganze an den driver deiner soundkarte weiter.
Nun kannst du im WMP MyDevice1 und im TV-Player MyDevice2 zu abspielen auswählen. Beides landet dann in deinem driver und wird auf hier auf Front/Rear gemappt.Und? Immer noch lust? :p
-
Danke CMatt für diese tolle Beschreibung
Also...hört sich nach viel arbeit an, aber ich hab eh nichts besseres zu tun...also werd ichs mal probiere!
Danke nochmal!
-
Ich habs mir nochmal paar mal durchgelesen und schon mich ein bisschen mit DirectSound beschäftigt. Doch jetzt hab ich noch ne Frage:
Nun kannst du im WMP MyDevice1 und im TV-Player MyDevice2 zu abspielen auswählen.
Ich wollte es so, dass der "Stream" des jeweiligen Programms durch den Benutzer einem Kanal zugewiesen werden kann (z.B. Front). Dh., dass der Sound (z.B. vom WMP) "abgefangen" wird und dann durch den Rear/Front ausgegeben wird.
Kann man das auch irgendwie bewerkstelligen?
-
genau so wie es oben steht
____________ MyDevice1 | |--> Front WMP ----------->| | | Dein code |--> Rear MyDevice2 | | TV ----------->| |--> Center |___________| | | O User inteface
Übers user interface kannst du dir dann einstellen wohin welcher eingang gelegt wird.
-
Also...wenn ich jetzt alles richtig verstanden und zusammengefügt habe würde das wie folgt ablaufen:
Der Outputtreiber stellt n Wiedergabegeräte bereit.
- z.B. wird dann im Windows Media Player oder in Winamp eingestellt, dass der Audio-Output über MyDevice1 ausgegeben werden soll.
Das Hauptprogramm stellt ein User Interface bereit über das jedem Wiedergabegerät ein Ausgang zugewiesen werden kann.
- z.B. für den WMP den Rear-Ausgang.
Dieses Programm erstellt nach diesen Einstellungen und mit dem Output der Wiedergabegeräte 3D-Sound über DirectSound.
- in diesem Fall wird der Output des WMP (MyDevice1) auf die Rückkanäle (Rear) gelegt.
Dieser generierte 3D-Sound wird als nächstes ausgegeben an die Soundkarte.
In dem Fall ist es doch wirklich ein Stream, oder? Das würde bedeuten, dass ich nach den Streammöglichkeiten von DirectSound schauen sollte?Hab ich es soweit richtig verstanden? Nicht das ich schon gleich falsch beginne! Ach übrigens: Ich hab kein Plan von Treiberprogrammierung...in der MSDN finde ich nur Dokumentationen auf Englisch aber damit denk ich mal hab ich kein Problem.
-
Klar ist das ein stream, du hohlst die 2 buffer von den eingängen, mixt die in nen 3D sound buffer zusammen und gibts den per DirectSound an die soundkarte weiter, das ganze in ner loop -> streaming
Ich glaube mich erinnern zu können das ich mal irgendwo was über ne Möglichkeit gelesen habe, ein sound device auch von nem user-mode prog aus anzubieten, kann dir aber leider nimmer sagen wo und wie das genau geht
Hier ein paar links für die kernel-mode (echter driver) variante:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/AudStream/hh/audstream/pcdesign_738b1006-46a3-41e8-a3b4-3c087ff30c7c.xml.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/AudStream/hh/audstream/pcdesign_a8a7a56f-642a-4d52-9bdd-57cca6a580b5.xml.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/AudStream/hh/audstream/pcdesign_ddfab1c3-0843-4dc1-8686-11986b988900.xml.aspBin jetzt leider erst mal ne Woche in Urlaub, aber gib rückmeldung was draus geworeden ist, konnte so ein virtuelles sound device nähmlich auch gebrauchen (damit lässt sich noch ne ganze menge anderer blodsinn anstellen *gggg* )