Sounds am sinnvollsten nutzen

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2273
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Sounds am sinnvollsten nutzen

Beitrag von Zudomon »

Im Grunde äquivalent zu dem Texturthread wollte ich mal bezüglich der Sounds nachfragen.

Ich habe gemerkt, dass ich im OGG Format für Sounds etwa auf 1/10 der Speichermenge kommen kann, als wenn ich die Dateien als WAV vorliegen habe. Das Problem an der Sache ist nur, dass es bisher so aussieht, dass man nur über kostenpflichtige Komponenten das ganze wieder abspielen kann.

Eine kleine Hoffnung wäre vielleicht noch OpenAL, alleredings würde ich gerne vorerst der Einfachheit halber auf DirectSound bleiben.

Die Frage ist nun, mal abgesehen davon wie ich am besten komprimiert Sounds speichern kann, auch, ob man OGG Files nicht einfach per Quellcode zumindest in WAV wieder zurückkonvertieren kann. OGG ist eigentlich nur ein Kontainerformat in der die Sounds als VORBIS abgespeichert sind. Ich erwähne dies, weil es mir nur darum geht, die in OGG Files enthalten Sounds wieder zu extrahieren, alles andere bräuchte ich selbst jetzt nicht.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5164
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Sounds am sinnvollsten nutzen

Beitrag von Schrompf »

OGG ist kostenlos und frei in jedem beliebigen Sinne - das war nämlich eine der Maximen, weswegen man überhaupt mit einem neuen Audio-Format angefangen hat. Deswegen kann auch praktisch jede Soundlib und jeder Player da draußen OGG abspielen, besonders natürlich die auf Spiele spezialisierten Libs. Nur Windows bringt standardmäßig keinen Codec für OGG mit, weswegen auch DirectAudio daran scheitert.

Ich benutze schon immer OGG, weil es patentfrei ist und sehr gut klingt. Es gab mal ne Weile noch Probleme mit billigen MP3-Playern (also jetzt Hardware-Teile), aber selbst das ist inzwischen recht entspannt.

Es gibt eine Reihe fertiger Abspiel-Libs für OGG. Such Dir eine aus, kompilier sie und bau eine Schnittstelle für Delphi, dann müsstest Du fertig sein. Alternativ kannst Du auf ne andere Sound-Lib wechseln - ich denke, jede beliebige da draußen kann OGG. Ich weiß es jedenfalls von FMod, WWise und Bass. Beide Ansätze dürften grob der selbe Arbeitsaufwand sein.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: Sounds am sinnvollsten nutzen

Beitrag von Spiele Programmierer »

Die Biblotheken stehen unter BSD-Lizenz und sollten so für beinahe jeden nutzbar sein.
Man braucht LibOgg und LibVorbis. Empfehlen würde ich auch noch zusätzlich LibVorbisfile, welches die Verwendung deutlich einfacher macht.

Man kann damit auch direkt Sound streamen ohne Festplattenspeicher aufzufressen. Ich mache das, der Leistungsverbrauch zur Laufzeit ist nicht groß und im Kontext meiner gesamten Anwendung unter der Nachweisbarkeitsgrenze. (Würde ich natürlich trotzdem in einem separaten Thread machen...)
Benutzeravatar
Zudomon
Establishment
Beiträge: 2273
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Sounds am sinnvollsten nutzen

Beitrag von Zudomon »

Sind die Libs denn Free for commercial use?
Außerdem wäre ist jetzt extra eine Schnittstelle für Delphi bauen, zumindest für mich nicht so ganz ohne.

Kann man das ganze nicht auch zu Fuß wieder extrahieren? Das muss doch möglich sein...
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: Sounds am sinnvollsten nutzen

Beitrag von Spiele Programmierer »

Du wirst doch die BSD-Lizenz kennen - oder der selbst googeln?
Aber ja, sie sind frie für die kommezielle Verwendung.

Ich weiß nicht was du zu Fuß meinst.
Wenn du damit meinst, sie am Zielcomputer im voraus zu dekomprimieren, bereitet mir der Gedanke Bauchschmerzen. ;)
Vielleicht gibt es ja fertige Sound Libs, die bereits Ogg Vorbis Unterstützung bieten.
So wie die von Schrompf genannten.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2273
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Sounds am sinnvollsten nutzen

Beitrag von Zudomon »

Ja, hatte ich mir gerade angeschaut. Meinte auch eher BASS etc., also dass die ja Geld wollen, wenn man es nutzt.
Würde aber statt externe LIBs einzubinden, das lieber zu Fuss machen... also muss ich wohl erstmal die Spezifikationen durcharbeiten. :cry:

Hey, du hast ja nochmal editiert, während ich kommentiert habe.
Warum bereitet dir das Bauchschmerzen?
Am Ende müssen die doch eh als WAV zu DirectSound übergeben werden...
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: Sounds am sinnvollsten nutzen

Beitrag von Spiele Programmierer »

Ja, habe ich. :)
Es verschwendet unnötig Speicherplatz beim Nutzer und erfordert zudem eine spezialisierte Installation.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5164
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Sounds am sinnvollsten nutzen

Beitrag von Schrompf »

Ganz am Ende sind es unkomprimierte Samples, die Du dem Soundtreiber gibst. Das stimmt. Nur wenn Du dekomprimierst, ist die Frage. Wenn Du's bei der Install machst, wird zwar der Download kleiner, der Platz auf der Festplatte des Anwenders bleibt aber gleich. Deswegen dekomprimiert man heutzutage direkt beim Abspielen, oder bei wirklich häufig und vielfach parallel gespielten Sounds, beim Laden von Platte.

Du kannst es natürlich auch zu Fuß machen. Das wird aber hardcore. OGG ist immerhin sinnvoll spezifiziert und dokumentiert, aber am Ende sind OGG, MP3 und alle sonstigen modernen Audioformate nur deswegen so speichersparend, weil sie auf Basis der Fourier-Transformation heftige Bitbasteleien und humanakustische Hörbarkeitsmodelle anwenden. Das nachzuprogrammieren wird Dich einige Wochen Vollzeit kosten, wenn Du es überhaupt schaffst. Ich empfehle weiterhin, irgendne fertige Lib zu nehmen. Wenn Du von DirectAudio nicht weg willst, dann google dir eine ogg vorbis decoder lib und integriere die.

[edit]Das mit "nicht schaffen" ist übrigens nicht böse gemeint. Ich habe schon Fehler in Audio-Decodern jagen dürfen, und das Thema war mir eigentlich deutlich zu hoch.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8351
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Sounds am sinnvollsten nutzen

Beitrag von Krishty »

Schrompf hat geschrieben:Ganz am Ende sind es unkomprimierte Samples, die Du dem Soundtreiber gibst. Das stimmt. Nur wenn Du dekomprimierst, ist die Frage. Wenn Du's bei der Install machst, wird zwar der Download kleiner, der Platz auf der Festplatte des Anwenders bleibt aber gleich. Deswegen dekomprimiert man heutzutage direkt beim Abspielen, oder bei wirklich häufig und vielfach parallel gespielten Sounds, beim Laden von Platte.
Macht man das nicht auch aus Zeitgründen? 40 MiB OGG-Effekte laden und zu 400 MiB WAV dekomprimieren dürfte ein wenig dauern. Ich habe hier ein weniger optimiertes Format, aber da würde das konvertieren aller Samples zu WAV glatt vier Minuten dauern. Darum wird hier erst direkt vor’m Abspielen entpackt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 5164
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Sounds am sinnvollsten nutzen

Beitrag von Schrompf »

Ja, auch aus Zeitgründen. Aber wenn's im Installer passiert, hast Du ja Zeit. Ich vermute, das Dekomprimieren schafft einige Minuten Signal pro Sekunde Rechenzeit. Also wäre selbst da eher die Festplatte der Flaschenhals als die Rechenzeit.

[edit] Grad nachgeschaut, weil ich neugierig bin. Mein aktuell laufender MP3-Player taucht im Task Manager nur mit 0% Rechenzeit auf. Wenn wir mathematisches Runden annehmen, bedeutet das maximal 0,5% Rechenzeit, also bei 8 logischen Kernen maximal 4% Rechenzeit eines einzelnen Kerns. Also mindestens 25s dekomprimiertes Signal pro Sekunde Rechenzeit. Nur weiß ich vom gelegentlichen Encoden einer Audio-CD, dass allein die Kompression schon mit >20x arbeitet. Die Dekompression wird da eher im Bereich mehrerer 100x liegen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: Sounds am sinnvollsten nutzen

Beitrag von Spiele Programmierer »

Ok, ich habe mal mit meinen Programm, das die von mir erwähnten Libs verwendet, bei Ogg Vorbis nachgemessen.
Ich komme bei meinen Testdaten (44100Hz Mono, ~1 Minute Testdatei die Musik enthält, 1000 mal hintereinander dekomprimiert) auf einen Dekomprimierdurchsatz auf einem CPU-Kern von ~12 Minuten Audio in 1er Sekunde Programmlaufzeit. Das entspricht Faktor 720x.
Antworten