Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

27.11.2014, 11:19

XAudio2, X3DAudio, XACT, DirectSound, OpenAL - Was denn nun?!

Ich beschäftige mich gerade wieder mit low-level Audio Programmierung.
Mit OpenAL hatte ich früher mal gearbeitet, eigentlich eine recht simple API, aber leider seit 9 Jahren tot.
DirectSound ist ja auch seit (bzw. nach) DirectX 8 nicht mehr aktuell.
Jetzt dachte ich die ganze Zeit, XAudio2 ist zur Zeit die 'standard' Audio API für Windows Vista+ und XBox 360+.
Dann lese ich noch von X3DAudio (dachte ja eigentlich XAudio2 könnte schon out-of-the-box 3D Sound) und dann lese ich noch von XACT.

Was genau ist denn zur Zeit der defacto Standard für die Audio Wiedergabe unter Windows?

Hinzu kommt noch, dass das Linken der XAudio2 Lib unter Windows 7 ganz anders funktioniert als unter Windows 8:
Unter Windows 8 soll man XAudio2.8, aus dem WinSDK 8.1, verwenden,
und unter Windows 7 soll man XAudio2.7, aus dem alten DirectX SDK vom Juni 2010, verwenden.
( Unter "cross-platform" verstehe ich etwas anderes ).

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

27.11.2014, 13:20

Naja soweit ich das sehe setzen die meisten auf Externe Bibliotheken wie FmodEx oder ähnliches.

Was ist mit libsndfile?

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

3

27.11.2014, 13:25

Was OpenAL angeht, zumindestens ist dieser Fork hier lebendig: http://kcat.strangesoft.net/openal.html
DirectSound ist aber tot und bei den XAudio-Sachen war ich auf den Seiten von MS mehr verwirrt als gut beraten ...
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

4

27.11.2014, 13:30

Ich nutze derzeit OpenAL SOFT, eine fleißig gehegte und gepflegte OpenAL-Implementierung. Tot ist nur die Standard-Implementierung. AL SOFT unterstützt derzeit EFX1.0 und EAXReverb, sowie nette Erweiterungen wie Loop Points. Fast alles wird so weit ich den Code durchstöberte softwareseitig gerendert, aber ganz fein mit SIMD & Co. beschleunigt. Vor allem ist OpenAL SOFT cross platform und OpenAL, also einfach zu handhaben.

Ich glaube, dass OpenAL SOFT auch das OpenAL-Paket im AUR ist.

Edit:
libSndFile kann nur Audio-Dateien entpacken, so dass man dann rohe Samples in z.B. OpenAL-Buffer laden kann. Und FmodEx ist zwar eine exzellente Audio-Lib, allerdings sehr happig in den Lizenzen, sobald man auch nur Spenden-Buttons für seine Projekte einbauen will. 9000$ die kommerzielle Lizenz, und ein jährlicher, happiger Betrag, wenn man z.B. eine Engine mit FmodEx bauen will, die andere auch für kommerzielle Projekte nutzen können. Hatte da vor Jahren mal angefragt.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Evrey« (27.11.2014, 13:36)


Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

5

27.11.2014, 14:14

Dann lese ich noch von X3DAudio (dachte ja eigentlich XAudio2 könnte schon out-of-the-box 3D Sound)


Jain. XAudio2 bietet dir alle Möglichkeiten die du brauchst um 3D Audio wiederzugeben. Du müsstest dich allerdings selber darum kümmern, dass die Lautstärke und Co auf den Kanälen dann richtig gesetzt werden. Den Dopplereffekt bei Bewegungen darfst du dann auch selber berechnen und all sowas.
Dafür gibt es eben X3DAudio, was diese ganzen Berechnungen für dich übernimmt.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

27.11.2014, 16:52

Danke für die Infos. Ich denke ich wende mich dann an die open-source Implementierung OpenAL-SOFT und XAudio2 & X3DAudio.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

7

27.11.2014, 17:18

Also habe mir vor kurzem auch diese Frage gestellt und hatte mich dazu entschieden die Schnittstelle zu abstrahieren um mehrere Audio Backends implementieren(erstmal OpenAL) zu können.

DirectSound ist leider tatsächlich offiziell veraltet, bietet aber gegen über XAudio einen signifikaten Vorteil: Es funktioniert überall. Und damit meine ich nicht nur Windows XP. XAudio muss erst am Endrechner vom Nutzer installiert werden. Außerdem hat man die Wahl zwischen der Version 2.7 die leider nicht mit Visual Studio mitgeliefert wird und erst die umständliche Installation des veralteten DirectX SDKs erfordert, und der neueren 2.8er Version, die zwar auf Windows 8 vorinstalliert ist und weniger COM benötigt, dafür leider aber wirklich nur auf Windows 8 läuft und in C++ keine Device Auswahl mehr ermöglicht.

XAudio ist in mehrere Teile aufgeteilt: XAudio selbst, X3DAudio, XAPOFX. Außerdem gibt es noch XACT, dass allerdings inzwischen auch schon offiziell veraltet sein soll. Das war wohl eine High Level Engine mit GUI Tool zum Einrichten der ganzen Sounds.
XAudio und X3DAudio sind einfach verschiedene Komponeten und waren vor 2.8 in unterschiedliche DLLs aufgeteilt und prinzipiell technisch komplett unabhängig. X3DAUDIO besteht zum Beispiel nur aus 2 Funktionen, die dir die genauen Soundparameter ausspucken, wenn du die Positionen im Raum usw. übergibst. Dopplerfaktor gehört auch dazu, aber X3DAudio kann noch viel mehr berechnen. Die berechneten Werte kannst du dann auf deine XAudio Soundquelle anwenden. Theoretisch könntest du aber auch die Werte aus X3DAudio für DirectSound oder deinen eigene Mixer verwenden. Wie sinnvoll das wirklich wäre, ist natürlich eine andere Frage.

XAudio scheint mir im Moment auch auf Windows keine wirklich stabile Plattform zu bieten. OpenAL ist zwar nicht wirklich fortschrittlich, bietet viele Funktionen oder ist besonders praktisch zu verwenden, läuft dafür aber stabil und auf allen Plattformen. XP, Windows 7, 8 und all den offenen Systemen. Ich würde an deiner Stelle im Zweifelsfall auf OpenAL setzen. OpenAL Soft ist zwar leider LGPL, aber du kannst es als DLL mitliefern und solltest so den Nutzern die Installation der alten OpenAL Implementierung ersparen können.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

8

27.11.2014, 23:13

Danke für die Zusammenfassung :-)
Habe mir gerade mal die zwei Funktionen von X3DAudio angesehen,
und ich denke das mache ich dann lieber selbst, anstatt noch weitere Abhängigkeiten einzubauen.
Ansonsten werde ich wohl XAudio2 und OpenAL als Backends meiner Abstraktion verwenden.
XAudio2 scheint mir übrigens ähnlich einfach zu sein wie OpenAL, auch wenn sich die APIs doch recht stark voneinander unterscheiden.
Die APIs beschränken sich eben auf das nötigste.

Werbeanzeige