Audio-Bibliothek

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Audio-Bibliothek

Beitrag von Jonathan »

Hey,

ich wollte mal wieder mein altes Projekt kompilieren, welches noch fmod für die Tonausgabe verwendet. Jetzt ist mir aufgefallen, dass fmod mal wieder nerviger geworden ist, und man sich registrieren soll, um die Downloads überhaupt erst sehen zu können. Es hat mir ja noch nie so ganz gepasst, dass es ein kommerzielles Produkt ist, aber früher war die Lizenz immer noch so, dass ich mir keine großen Sorgen machen musste und es lies sich letztendlich auch ganz gut benutzen.

Es gibt ja so ein paar offensichtliche Alternativen (irrKlang, OpenAL), aber bevor ich mir die jetzt auch alle stundenlang anschaue, wollte ich einfach mal eure Meinung hören. Was benutzt ihr so, und warum findet ihr es gut / schlecht?

Zum Projekt: Ein kleines Spielchen, das derzeit in C++ mit OpenGL unter Windows entwickelt wird. Alle anderen Abhängigkeiten sind derzeit OpenSource und plattformübergreifend, auch wenn es keine Builds für andere Systeme gibt, würde ich mir die Option zumindest prinzipiell für die Zukunft gerne offen halten.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 4831
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Schrompf »

Ich benutze immer noch FModEx, aber habe seit Jahren nicht mehr nach einer neuen Version geschaut. Du kannst mal gucken, ob es bei bugmenot.com einen Login dafür gibt.

Ansonsten scheinen viele OpenAL zu benutzen, was wohl nicht mehr weiterentwickelt wird. Aber es gibt jemanden, der eine Minimalversion davon reimplementiert hat. Ein einzelnes C-File, also kein "Download and install CMake", aber baut auf SDL auf... ich weiß nicht, wie nützlich das Ding ohne SDL ist: https://hg.icculus.org/icculus/mojoAL Abgesehen davon gibt es OpenAL-Soft, eine stabile Software-Implementation von OpenAL, aber die ist halt ein massiver Klumpen Code mit CMake und allem Scheiß.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
joggel

Re: Audio-Bibliothek

Beitrag von joggel »

Also ich benutze auch FMod.
Jetzt erähle ich bestimmt etwas mist, aber egal^^
SFML kommt auch mit einer kleinen Audioabteilung daher; simples abspielen von Sounds eben.
Nur weiß ich jetzt nicht, ob man dazu die ganzen anderen sachen von SFML benötigt, sprich: SFML-Window und so, oder ob das ohne Abhängigkeit funktioniert. Das müsste ich mal probieren wenn ich wieder PC habe...

Nachtrag:
Habe gerade YSE gefunden, vlt ist das etwas:
http://www.attr-x.net/yse/

Was mir auch noch eingefallen ist, als ich mir dieses YSE angeschaut habe, ist JUCE.
Das ist eine Lib mit der man eher Soundmanipulation/PlugIns macht. Scheint auch sehr etabliert zu sein.
https://juce.com

Gruß
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Jonathan »

Das OpenAL tot ist, ist natürlich ein bisschen schade, andererseits war es auch nervig, wenn man immer erst diesen Installer ausführen musste. Naja.

Aber YSE sieht echt interessant aus. Ich habe gerade kurz die Demo runter geladen, es scheint alles zu können, was ich will und macht einen halbwegs soliden Eindruck. Gut, auf der ersten Seite der Dokumentation wird erklärt, warum Singletons (die dort Functors genannt werden...) toll sind und überall benutzt werden, und standardmäßig wird es wohl als DLL eingebunden (und dlls sind ja vom Teufel), aber das sind jetzt erstmal keine prinzipiellen Hindernisse. Etwas kritischer ist vielleicht, dass das Ding den Eindruck eines wenig etablierten Nischenproduktes erweckt, es wird zwar scheinbar derzeit aktiv weiterentwickelt, aber wie es in der Zukunft aussieht, kann man nicht sagen.
Ich werde mal schauen, wie einfach es zu benutzen ist (bezüglich Abhängigkeiten und Co.) und es dann gegebenenfalls verwenden. Vielen Dank für den Tipp!
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Jonathan »

YSE benutzt Juce und Juce ist GPL - zu restriktiv für mich. Außerdem gibt es nur eine VC Solution die nicht auf Anhieb kompilieren will, und das ganze Projekt sieht halbwegs komplex aus - ich will eigentlich nicht einen ganzen Nachmittag verschwenden, um es ans laufen zu kriegen.
Ich gucke mir jetzt erstmal irrKlang an. Das ist zwar genauso kommerziell wie fmod, aber die Webseite ist nicht so nervig modern (viel weniger Bullshitbingo und man kann alles direkt runterladen). Mal schauen inwieweit ich damit glücklich werde.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
joggel

Re: Audio-Bibliothek

Beitrag von joggel »

Das verwirrt mich. Ich dachte YSE sei unter der Eclipse Public License.
Zitat: "Best of all: YSE is open source. It is released with the Eclipse Public License, making it usable by open source as well as commercial developers."
Ich dachte, man kann das in seinen Projekten ohne Probleme verwenden?!
Aber wie gesagt: ich habs nur überflogen.

Und ich dachte, dass JUCE YSE verwendet. Aber andersrum ist der Fall....

Aber gut zu wissen :)
Benutzeravatar
Schrompf
Moderator
Beiträge: 4831
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Schrompf »

Wie gesagt: es gibt eine gut gepflegte und aktuelle Software-Implementation von OpenAL, die Du einfach so bauen und linken kannst.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Jonathan »

Ja danke, das hatte ich beim ersten mal tatsächlich überlesen. Habs jetzt auch mal getestet, bin aber nur mäßig überzeugt: Unter Windows braucht es halt irgendein Backend, es scheint, als müsste man erst noch das ganze DX SDK installieren, damit er DirectSound benutzen kann. Und dann wird es doch wieder fummelig.

Ich habe jetzt irrKlang getestet. Viel mehr als den ersten Sound abzuspielen habe ich damit noch nicht gemacht, aber zumindest war es vollkommen problemlos einzubauen.

Aber ein bisschen kurios ist das schon. DirectSound ist ja wohl auch deprecated, was benutzen Spiele denn heute dann standardmäßig? Bis auf fmod erscheinen mir ja auch alle hier genannten Alternativen eher Nischenprodukte zu sein.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
joggel

Re: Audio-Bibliothek

Beitrag von joggel »

Ich kenne mich da leider nicht aus, und Du hast ja auch gefragt, was heute so stanndardmäßig verwendet wird.
Da habe ich auch keine Ahnung...

Vlt ist hier noch etwas dabei:
https://github.com/ciconia/awesome-musi ... -libraries
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Jonathan »

In der Liste war viel für andere Sprachen (JavaScript und so). Das einzige was ungefähr in die Richtung ging erschien mir PortAudio zu sein. Potentiell interessant, aber ziemlich lowlevel, es kann nicht mal wav-Dateien direkt laden und man hantiert explizit mit Parametern wie Sampling-Rate. Vermutlich eher für Audio-Processing gedacht als für Spiele.

irrKlang greift unter Windows übrigens auch auf DirectSound zurück, aber das ist ja in den neueren Windows-Versionen vorinstalliert (und man braucht kein DX-SDK). Scheinbar bedeutet das aber leider auch, dass Effekte wie Hall nur unter Windows laufen. Ich muss mich da immer noch ein bisschen reinlesen,, aber ich vermute ich werde sicherheitshalber eine dünne Kapslung dafür schreiben, falls ich es doch nochmal austauschen will (und sei es auch nur für einen eventuellen Linux-Port).
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Krishty »

EAX und OpenAL werden auf Windows durch DirectSound emuliert, sofern keine Hardware verbaut ist. DirectSound und XAudio 2 werden wiederum durch WASAPI emuliert.

Wenn du also die allmächtige API suchst, die alles kann und bei der alles zusammenläuft, hast du sie nun.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Jonathan »

Gerade entdeckt: SteamAudio

https://valvesoftware.github.io/steam-audio/

Auf den ersten Blick sieht es ganz interessant aus, ich muss es mir aber nochmal in Ruhe anschauen.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 4831
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Schrompf »

Oh cool. Lizenz klingt sinnvoll, es gibt ne C-API, und es wird ein Grundstock an Plattformen unterstützt. Warum kannte ich das bisher noch nicht? Danke jedenfalls!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Top-OR
Establishment
Beiträge: 330
Registriert: 02.03.2011, 16:32
Echter Name: Jens H.
Wohnort: Esslingen/Dessau
Kontaktdaten:

Was benutzt Ihr denn nun zum Ton-Machen unter Win(Vista+)?

Beitrag von Top-OR »

Hallo Freunde der schöne Klänge!

Ich muss leider den Totengräber spielen und diesen Thread noch einmal ausgraben, da ich leider nicht 100% daraus schlau werde. Hier, was mich umtreibt:

Ich möchte meiner Applikation (Anwendung Richtung Spiel/Multimedia) die Fähgkeit verleihen, „Audio zu machen“, also Ton auszugeben.
Ich denke dabei an folgende Use Cases:

• Ich möchte „Hintergrundmusik“ in einer (Spiels-)zene ausgeben
• Ich möchte eventbasierte Geräusche zusätzlich zu Hintergrundmusik ausgeben
• Ich möchte Videos abspielen und den dekodierten Audiostream ausgeben

Technisch bin ich folgendermaßen unterwegs:
• Ich adressiere primär Windows und zwar alles ab Windows Vista aufwärts.
• Ich baue mit dem bisherigen Framework nicht auf DirectX aus, es heisst ich fänd es cool, wenn man nicht unbedingt auf zusätzlich zu installierende Runtimes (auch DX) setzt. Wenn es im Fall wie XAudio2 in modernen Systemen schon per default drin ist (habe ich das richtig verstanden?), dann ist es OK.
• Ich bin auf Windows mit MinGW (CodeBlocks/MSYS2) unterwegs. (nicht MinGW-w64, sondern der „normale“).
MSVC habe ich seit einigen Jahren in Rente geschickt, ich würde mich eventuell zum bauen einer Sound-DLL mit der MSVC 2019 Community Edition anfreunden, wenn ich muss.
Um überhaupt erstmal einen Sound zu hören, würde ich den Use-Case auch auf
„Ich möchte RIFF-Audiodaten hören“ herunterschrauben.

Nun mein Anliegen:

Welche Schnittstelle könnte man benutzen, um überhaupt erstmal was zu bauen, dass man „was hören kann“. Ich habe wirklich keine Ahnung, auf welche API ich mich konzentrieren soll.

• SteamAudio:
Steam-Audio mit dem ganzen räumlichen Sound-Geraffel find ich ein bisschen zu Overkill.

• FMod:
FMod scheinen viele hier nicht in Frage zu ziehen, da die Lizensen restriktiver geworden sind. Mir erscheint die FMod-Indy-Lizens aber ganz OK, mein „Projektbudget“ liegt weit unter 500K und wird es immer bleiben. Was stört Euch an FMod? Was FMod früher cooler und bekommt man noch alte Versionen?

• WASAPI:
Bei Krishty lese ich WASAPI? Hat jemand von Euch schon WASAPI gemacht? Kennt Ihr ein Demo?

• XAudio2 (2.8 / 2.9):
Ich habe bisher etwas in XAudio2(8/9) recherchiert, komme aber mit dem MinGW/GCC an meine Grenzen (da keine Header und Libs). Hab Ihr Tipps, da zu bauen? Komme ich um MSVC nicht herum? Brauche ich dazu mit Windows 10 ein DX SDK?



Ich stelle mir gerade die Frage, wie viele Video-Tools unter Windows (VLC, diverse FreeWare/OSS Editoren oder Encoder) den Sound unter Windows raus bekommen? Was machen die? Wisst Ihr das?

Also die API/Lib-Frage treibt mich gerade ziemlich um und ich komme nicht so recht weiter.
Mit Welcher API macht Ihr Sound und welche Tool-/Buildchain benutzt Ihr?
Ich würde mir auch überlegen, ob ich einen Soundmixer selbst schreibe, falls die API zu Low Level ist, aber sonstige Vorteile hat.
Also: Womit macht Ihr unter (modernen) Windowsen Sound und was benutzt Ihr dazu?
--
Verallgemeinerungen sind IMMER falsch.
joggel

Re: Audio-Bibliothek

Beitrag von joggel »

Ich kann dir leider keine nützlichen Informationen geben...
Ich verwende zur Zeit (in meinem Hobbybereich) Openframeworks; das bringt alles an Audio-Gedöns mit, bzw es gibt wrapper/Addons für unterschiedliche AudioLibs.

Ich hatte letztens was interessantes gefunden. Es war eine Shader-LiveCoding Umgebung. Und das benutze eine Lib für die Audioausgabe und analyze. Das habe ich mir aber leider nicht abgespeichert :(


An was bastelst du denn wenn ich mal so neugierig fragen darf?^^
Zuletzt geändert von joggel am 01.05.2019, 20:33, insgesamt 1-mal geändert.
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von xq »

Wenn es dir nur um "RIFF auf Windows" geht, was spricht gegen die Multimedia Library der WinAPI:

https://docs.microsoft.com/en-us/previo ... 6(v=vs.85)
https://docs.microsoft.com/de-de/window ... -functions

Damit hättest du nur die Basics und du brauchst keine Dependency auf ein Audioframework
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
Top-OR
Establishment
Beiträge: 330
Registriert: 02.03.2011, 16:32
Echter Name: Jens H.
Wohnort: Esslingen/Dessau
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Top-OR »

Hallo Ihrs!

Danke erstmal für die bisherigen Antworten.

@Joggel: Ich baue weiter am Framework meines Langzeitprojektes „Open World Rollenspiel“, was vorraussichtlich zu meinem Renteneintritt „for free“ bzw. „Appel+Ei“ erscheinen wird.

Ist alles komplett selbstgeschrieben, lediglich die Toolchain nutzt Assimp, DevIL und andere „freie Software“. Als letztes habe mal mein Elternhaus, in dem ich aufgewachsen bin, nachmodelliert und in die Fantasy-Idylle gesetzt:



Als letztes habe ich einen VideoDecoder auf Webm/VP8-Basisc integriert und finde es ist an der Zeit, dass meine Spielwiese auch mal ein bisschen Sprechen lernen bzw. Hintergrundmusik dudelt bzw. ich auch ein bisschen in 2D-Video Gadgets investiere (mir schwebt da Videowidergabe auf 3D-Objekten vor, mal gucken).

Da ich runtime-technisch unter Win32+OpenGL unterwegs bin und fast keine weiteren externen Dependencies habe (seit neuestem libwebm, libvpx und openssl), möchte ich, dass das weiterhin wenn möglich so bleibt und schlank bleibt.

@MasterQ32:
Ich hatte bisher die Annahme, dass die Multimedia API von Windows hoffnungslos deprecated ist und ich keine allzu große Lust habe, eine API zu adressieren, die es vielleicht morgen aus politischen Gründen nicht mehr gibt – vielleicht ist diese Annahme auch falsch. Was meinen die Anderen dazu?

Weiterhin hatte ich „im Internet gelesen“, dass die MM-Api von der Geschwindigkeit nicht so der Brüller sein soll. Was das genau (für mich) bedeutet, was ich aber nicht.

Ich könnte mir vorstellen, dass ich auch mit Verzögerungen/Latenzen im (niedrigen) zweistelligen Microsekundenbereich noch akzeptabel leben könnte (weiss nicht genau). Ich brauche keine Nanosekundenlatenzen – glaube ich. ;-)

Was die Audiodaten selbst angeht, habe ich keine Ansprüche – Decodieren tue ich selbst, Mixen würde ich auch noch (wenns sein muss), RIFFs bauen wäre auch OK.

Was meinst du? Was meinen die anderen?

Vielen Dank erstmal,
Jens


PS - @MasterQ32: Wollen wir mal wieder nen Stammtisch machen?
--
Verallgemeinerungen sind IMMER falsch.
Benutzeravatar
Top-OR
Establishment
Beiträge: 330
Registriert: 02.03.2011, 16:32
Echter Name: Jens H.
Wohnort: Esslingen/Dessau
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Top-OR »

Hallo Leute!

Ich beantworte mir die oben gestellte Frage (zu gewissem Teil) nun selbst:

Ich habe nen kleinen WAV-Loader geschrieben, der die PCM Daten dann über Windows MME an eine/die Soundkarte rauspustet. Ich kann zwischen Initialisierung der API für ein Stück Audio (waveOutPrepareHeader) und dem eigentlichen Abspielen (waveOutWrite) keine "gefühlt" kritischen Latenzen feststellen. Auf den Kisten, auf denen ichs teste, kommte der Sound auch "gleich". Das ist doch schonmal gut. also wirlich nur ein paar MS. Damit kann ich leben (wenns so bleibt).

Jetzt muss ich nur noch auseinanderklamüsern, wie es mit mehreren Sound parallel läuft: Ob das die API selbst machen kann oder ob immer nur ein Sound-Chunk auf einem Sound Device auf einmal verarbeitet werden kann und ich vorher selbst mixen muss.

Aber: Soweit, so gut und SO SIMPEL! Vielen Dank, MasterQ32.
--
Verallgemeinerungen sind IMMER falsch.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Audio-Bibliothek

Beitrag von Jonathan »

Gerade gefunden, vielleicht taugt das ja was:

https://sol.gfxile.net/soloud/index.html
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten