Windows Sound API
-
Hallo,
ich möchte gerne für Windows 7 aber auch XP eine eigene Audiobehandlung in mein Programm einbauen, die dabei sowohl auf DirectSound, XAudio, als auch auf andere 3rd Party Libs wie Portaudio verzichtet, da ich das gerne zu selbstschulungszwecken vom buffer zum mixer selbst machen möchte.
Jetzt habe ich aber KEINE eindeutige Antwort gefunden mit welcher Windows API ich da arbeiten soll, da wenn ich z.b. nach "lowlevel sound api" google, tutorials mit waveout überwiegend angezeigt werden, aber in sämtlichen forenposts immer auf directsound verwiesen wird.
Waveout ist depricated unter windows 7/8 oder kann ich das benutzen?
Dieses Wasapi klingt nach der Beschreibung von Microsoft genau wie waveout, wo ist da der unterschied?Es geht mir nicht darum möglichst komfortabel tausende mp4 sounds gleichzeitig abzuspielen sondern tatsächlich um den low level bereich für eine soundengine.
Danke schonmal!
-
http://en.wikipedia.org/wiki/XAudio_2 schrieb:
XAudio2 operates through the XAudio API on the Xbox 360, through DirectSound on Windows XP, and through the low-level audio mixer WASAPI on Windows Vista and higher.
Wenn du also sowas wie XAudio2 nachprogrammieren willst, würd ich WASAPI nehmen, da XAudio2 auf Windows Vista und höher auf WASAPI aufsetzt.
floorball
-
ja, das problem ist allerdings xp, da ich selbst auch noch viel auf xp arbeite und wie du bereits sagtest, wasapi ist für vista und höher
und soweit ich das verstanden habe ist die soundses.dll eine com schnittstelle, also nichts mit loadlibrary und getprocaddress für einen runtime wrapper
-
Kalaeido schrieb:
ja, das problem ist allerdings xp, da ich selbst auch noch viel auf xp arbeite und wie du bereits sagtest, wasapi ist für vista und höher
Dann verwend XAudio 2, das läuft auch auf XP...
-
das gefällt mir alles nicht so wirklich weil ich entweder immer 2 builds machen muss (für xp (waveapi) und 7/8 (wasapi)) oder irgendwelche libs downloaden.
ich mag directx nicht, deswegen möchte ich das gerne vermeiden (xaudio2 unter xp), auch wenn es unter Windows (immer noch) standard zu sein scheint.
aber irgendeine andere Möglichkeit für eine cross lib zwischen xp und 7/8 gibt es warscheinlich nicht
-
Kalaeido schrieb:
das gefällt mir alles nicht so wirklich weil ich entweder immer 2 builds machen muss (für xp (waveapi) und 7/8 (wasapi)) oder irgendwelche libs downloaden.
Kalaeido schrieb:
ich mag directx nicht, deswegen möchte ich das gerne vermeiden (xaudio2 unter xp), auch wenn es unter Windows (immer noch) standard zu sein scheint.
Was von DirectX übrig ist, ist seit längerem fixer Bestandteil von Windows. XAudio 2 musst du nicht downloaden...
Kalaeido schrieb:
aber irgendeine andere Möglichkeit für eine cross lib zwischen xp und 7/8 gibt es warscheinlich nicht
Da fällt mir sonst nur noch OpenAL oder eben sowas wie z.B. SFML ein, wobei ich nochmals meine Empfehlung von XAudio 2 wiederholen möchte. Windows XP ist hoffnugnslos veraltet. Ich kann wirklich nur wärmstens empfehlen, uns hier im aktuellen Jahrzehnt zu besuchen, wir beißen nicht...
-
Kalaeido schrieb:
ich mag directx nicht, deswegen möchte ich das gerne vermeiden (xaudio2 unter xp), auch wenn es unter Windows (immer noch) standard zu sein scheint.
Das ist kein rationaler Grund.
Versetz dich mal in unsere Lage, und dann stell dir die Frage: wieso sollten uns deine irrationalen Abneigungen intertessieren?
-
Ich würde mich strikt von XP verabschieden. Punkt!
Dann reduziert sich auch Dein Problem.
-
Was denken die miesepetrigen herren (abgesehen von dot) denn über kernel streaming?
-
dot schrieb:
Da fällt mir sonst nur noch OpenAL oder eben sowas wie z.B. SFML ein, wobei ich nochmals meine Empfehlung von XAudio 2 wiederholen möchte. Windows XP ist hoffnugnslos veraltet. Ich kann wirklich nur wärmstens empfehlen, uns hier im aktuellen Jahrzehnt zu besuchen, wir beißen nicht...
Mmh, OpenAL hätte ich genommen wenn es nicht veraltet wäre und weiter entwickelt würde, sfml bringt mir leider schon zu viel mit, sodass der low level aspekt abhanden kommt.
Natürlich ist Windows 7 weit verbreitet und moderner, jedoch unterstützt das Projekt auch immer noch XP
-
Willst du dir absichtlich und vor allem unnötig Arbeit machen?
Spezielle APIs braucht man beim Thema Sound nur, wenn man bit-perfect ausgeben muss oder super niedrige Latenz braucht. z.B. weil man die Daten bit-perfect auf der SPDIF Schnittstelle haben möchte, oder ein Programm schreibt das Live-Daten bearbeitet und gleich wieder ausgibt.Wenn du das nicht benötigst, dann tut es jede beliebige Sound API mit der man "streamen" kann. Also die gute alte "WaveOut" API, DirectSound, OpenAL, Kernel-Streaming, ASIO - im Endeffekt alles das selbe.
D.h. dein Programm stellt einen Stream aus N*f Samples pro Sekunde zur Verfügung und übergibt diesen irgendwie der
HardwareAPI. Ob dabei ein Ring-Buffer zur Verwendung kommt (DirectSound) oder hintereinander mehrere Buffer submitted werden (WaveOut) spielt eigentlich keine Rolle.
Mehr "low level" als das wird es nicht.BTW: die WaveOut API kannst du unter Windows 7 bzw. 8 auch verwenden. Keine Ahnung wieso du meinst du müsstest da zwei Builds machen.