Sounds am sinnvollsten nutzen
Sounds am sinnvollsten nutzen
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.
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.
- 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
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.
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.
-
- Establishment
- Beiträge: 426
- Registriert: 23.01.2013, 15:55
Re: Sounds am sinnvollsten nutzen
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...)
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...)
Re: Sounds am sinnvollsten nutzen
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...
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...
-
- Establishment
- Beiträge: 426
- Registriert: 23.01.2013, 15:55
Re: Sounds am sinnvollsten nutzen
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.
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.
Re: Sounds am sinnvollsten nutzen
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.
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...
Würde aber statt externe LIBs einzubinden, das lieber zu Fuss machen... also muss ich wohl erstmal die Spezifikationen durcharbeiten.
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...
-
- Establishment
- Beiträge: 426
- Registriert: 23.01.2013, 15:55
Re: Sounds am sinnvollsten nutzen
Ja, habe ich. :)
Es verschwendet unnötig Speicherplatz beim Nutzer und erfordert zudem eine spezialisierte Installation.
Es verschwendet unnötig Speicherplatz beim Nutzer und erfordert zudem eine spezialisierte Installation.
- 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
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.
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.
- Krishty
- Establishment
- Beiträge: 8351
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Sounds am sinnvollsten nutzen
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.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.
- 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
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.
[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.
-
- Establishment
- Beiträge: 426
- Registriert: 23.01.2013, 15:55
Re: Sounds am sinnvollsten nutzen
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.
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.