AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Preview: Audorra Digital Audio Library (23.08.09)
Thema durchsuchen
Ansicht
Themen-Optionen

Preview: Audorra Digital Audio Library (23.08.09)

Ein Thema von igel457 · begonnen am 20. Mär 2009 · letzter Beitrag vom 7. Feb 2010
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Benutzerbild von igel457
igel457
Registriert seit: 31. Aug 2005
Audorra - eine OpenSource Audiobibliothek für Spiele

Was ist das, bzw. was wird es werden?
Audorra ist eine Cross Plattform Audiobibliothek, die es ermöglicht Musik und Soundeffekte in Spielen (oder anderen Audio-Anwendungen) wiederzugeben. Dabei liegt volle Unterstützung für 3D-Surround Sound und Positionierung von Audioquellen im 3D-Raum vor. Audorra ist modular aufgebaut: Sowohl die Ausgabebibliothek ("driver", also z.B. WaveOut, DirectSound oder OpenAL) als auch die Decoder können über ein Pluginsystem statisch oder dynamisch gelinkt werden.

Warum dieses Projekt?
Audorra soll als Ergänzung zu meiner 2D-Grafikbibliothek Andorra und zu meiner Medienbibliothek Acinerella gesehen werden. Außerdem ist für Pascal abgesehen von ACS (welches keinen 3D Sound unterstützt) keine OpenSource Audiobibliothek vorhanden, oftmals wird FMOD oder die BASS verwendet - ein Misstand, der schleunigst behoben werden sollte.

Wie weit ist es?
Tja, da liegt der Haken bei der ganzen Sache: Das Projekt fliegt in seinem jetzigen Status schon seit gut zwei/drei Monaten auf meiner Platte rum. Jedoch habe ich momentan Aufgrund anderer Aktivitäten keine Zeit daran (und auch an Andorra) großartig weiter zu entwickeln. Das wird sich erst in den Sommerferien (hoffentlich) wieder ändern.
Um trotzdem meine bisherige Arbeit zu präsentieren (Wiedergabe von Musik mittels funktionierendem Filtergraphsystem über Waveout unter Verwendung eines nativen WAV-"Decoders" und Acinerella), habe ich mich entschlossen diesen Thread hier zu öffnen und das Projekt mit einem kleinen Demoprogramm hochzuladen.

Unterstützte Audioformate:
  • Nativ:
    • PCM WAVE
    Acinerella:
    • Audio: AIFF, MP3, FLAC, MPC, OGG VORBIS
      Video-Container: AVI, MPEG (VOB), FLV, OGG

Systemanforderungen:
Prozessor: Erfolgreich getestet auf einem 900Mhz Pentium III,
Speicher: braucht ca. 1MB RAM pro Stream.
Betriebsystem: Windows 2000 oder höher, Linux (MacOS sollte auch funktionieren - mangels MacOS aber noch nicht getestet)
IDE: Delphi >=6 oder Lazarus

Lizenz:
Das ganze Projekt ist unter der MPL lizenziert. Die GPL oder die LGPL dürfen aber ebenfalls verwendet werden.


Es wäre schön wenn jemand das angehängte Testprogramm (im Ordner "bin") testen könnte. Wenn ihr irgendwo noch einen uralt PC stehen habt, dann würde mich interessieren, ob es auch darauf läuft, besonders wenn die CPU-Auslastung auf 100% getrieben wird.

Update 1 - 21.03.09: Probleme bei der Wiedergabe unter Windows Vista behoben
Update 2 - 18.04.09: OpenAL und Linux Unterstützung hinzugefügt, neue Version von Acinerella
Update 3 - 26.04.09: Verbesserung der Demo, hinzufügen von "Analyzern" und Events in TAuPlayer
Update 4 - 23.08.09: Viele kleine Verbesserungen

Viel Spaß damit, ich bin auf eure Reaktionen gespannt,
Andreas
Miniaturansicht angehängter Grafiken
simple_demo2_171.png  
Angehängte Dateien
Dateityp: zip audorra_996.zip (2,12 MB, 188x aufgerufen)
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
 
Namenloser

 
FreePascal / Lazarus
 
#11
  Alt 21. Mär 2009, 15:50
Zitat von igel457:
Kein Problem, ich habe den Ausgabebuffer jetzt einfach mal Testweise von 4 * 1024 auf 16 * 4096 Samples erhöht, also ca. 2 Sekunden. Systembedingt ist das Peakmeter und die Lautstärkeregelung nun jedoch ziemlich träge.
Funktioniert!
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#12
  Alt 21. Mär 2009, 15:57
Ok, danke für die Info. Probiere mal das angehängte Programm. In die beiden Edits kannst du Blockanzahl und Sampleanzahl eintragen.

Die Änderungen wirken sich erst auf jede neu geöffnete Datei aus.(!)
In den Hints der Edits sollte alles erklärt sein. Probiere die Werte so klein wie möglich zu halten, bevor es beginnt zu stottern.
Angehängte Dateien
Dateityp: zip simple3_115.zip (260,2 KB, 17x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#13
  Alt 21. Mär 2009, 16:02
Zitat von igel457:
Kein Problem, ich habe den Ausgabebuffer jetzt einfach mal Testweise von 4 * 1024 auf 16 * 4096 Samples erhöht, also ca. 2 Sekunden. Systembedingt ist das Peakmeter und die Lautstärkeregelung nun jedoch ziemlich träge.
Goil, der geyht.
Höhrt sich perfekt an!
Jetzt läuft auch die Zeit synchron mit der meiner G15-Stoppuhr.
Vielen dank von mir, das Projekt kommt gerade wie gerufen.

Edit:
Jop, 4/2048 und 8/1024 läuft perfekt. (sogar 6/1024 geht)
Stresstest sagt:
Prozess auf CPU[3] gelegt, 3 Minuten lang den Kern auf 100% gejagt und das Resultat war:
Alles was auf dem Kern lief hat gestockt, aber die Tonausgabe von deinem Programm lieft sauber weiter.
  Mit Zitat antworten Zitat
Namenloser

 
FreePascal / Lazarus
 
#14
  Alt 21. Mär 2009, 16:03
Bei mir ist die Kombination 4/2048 optimal.

Edit: Übrigens scheint bei dieser Einstellung auch der Lautstärkereglerin Echtzeit zu funktionieren. Das war vorher nicht der Fall. Oder hast du etwas verändert?
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#15
  Alt 21. Mär 2009, 16:11
Danke für die Antworten,

könnt ihr mal noch 8*1024 ausprobieren? Funktioniert das? Mir wäre nämlich eigentlich lieber, wenn der erste Wert anstatt dem zweiten erhöht wird.

EDIT: Und stresst das System dabei vielleicht mal noch ein bisschen... Irgend ein 3D-Spiel, der Virenscanner oder eine Endlosschleife (100% Auslastung pro CPU) sollte es tun.
Andreas
  Mit Zitat antworten Zitat
Namenloser

 
FreePascal / Lazarus
 
#16
  Alt 21. Mär 2009, 16:14
Zitat von igel457:
könnt ihr mal noch 8*1024 ausprobieren? Funktioniert das? Mir wäre nämlich eigentlich lieber, wenn der erste Wert anstatt dem zweiten erhöht wird.
8*1024 funktioniert auch, 16*512 auch, 32*256 auch, usw... Such es dir aus
Stresstest kommt noch...

[edit]
Hab mit einem schnell geschriebenen Testprogramm alle meine 4 Kerne vollständig ausgelastet. Auf die Wiedergabe hat das keinen Einfluss.

Beim beobachten mit dem Taskmanager ist mir aber etwas anderes aufgefallen: Wenn ein Lied fertig abgespielt wurde, erzeugt dein Programm 25% CPU Last (also umgerechnet auf einen kern 100%). Während des Abspielens passiert das nicht. Woran liegt das?
[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
 
#17
  Alt 21. Mär 2009, 16:20
Hi Andreas,

Als Unbedarfter habe ich da doch mal ne Frage: Wo liegen die Anwendungsmöglichkeiten oder die Vorteile deiner Bib gegenüber BASS und FMOD? Zumindest die Demo sieht für mich aus, als wäre es etwas in Richtung BASS. Oder liegt der Schwerpunkt eher auf der Unterstützung für Spieleentwickler, die mehrere Audioquellen im virtuellen Raum benötigen?
米斯蘭迪爾
  Mit Zitat antworten Zitat
Namenloser

 
FreePascal / Lazarus
 
#18
  Alt 21. Mär 2009, 16:24
Zitat von igel457:
Audorra ist eine Cross Plattform Audiobibliothek
Das dürfte der Vorteil sein
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
 
#19
  Alt 21. Mär 2009, 16:28
Zitat von NamenLozer:
Zitat von igel457:
Audorra ist eine Cross Plattform Audiobibliothek
Das dürfte der Vorteil sein
Das alleine überzeugt mich nicht, das ist FMOD auch. Wenn, dann wäre der Vorteil in der Tatsache zu sehen, dass es sich um OS handelt...
米斯蘭迪爾
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#20
  Alt 21. Mär 2009, 16:32
Hallo,

Zitat von Daniel G:
Als Unbedarfter habe ich da doch mal ne Frage: Wo liegen die Anwendungsmöglichkeiten oder die Vorteile deiner Bib gegenüber BASS und FMOD? Zumindest die Demo sieht für mich aus, als wäre es etwas in Richtung BASS. Oder liegt der Schwerpunkt eher auf der Unterstützung für Spieleentwickler, die mehrere Audioquellen im virtuellen Raum benötigen?
Es soll später mal eher in Richtung 3D-Sound gehen - aber momentan sind eben nur die einfachen Sachen implementiert (die ja schließlich auch funktionieren müssen - und jeder Spieleentwickler will ja schließlich auch einfache Hintergrundmusik abspielen können). Quasi ist die aktuelle Demo eine Art Proof-Of-Concept für mein Audiostream-Filtergraphsystem und Pluginbasierte Audioausgabe und Dekodierung.

Bereits implementiert aber in der Demo nicht vorhanden ist die Möglichkeit statische (also komplett im Audiospeicher liegende) Sounds wiederzugeben (ähnlich der Soundliste in DelphiX). Die BASS.dll ist schön und gut (und auch von mir in vielen Projekten verwendet) aber eben nicht OpenSource, nicht kostenlos für kommerzielle Projekte und nicht nativ in Pascal geschrieben geschweige denn für Linux (ok, FMOD ist es) verfügbar.

Achso, außerdem wird Audorra sich nahtlos in Andorra 2D integrieren.

@NamenLozer
Das mit 100% CPU-Auslastung ist mir auch gerade aufgefallen. Ich denke, dass der Audiotreiber ständig neue Daten anfordert, obwohl keine da sind. Ich habe noch kein "Stopp-Callback" implementiert. Die Buffergröße habe ich jetzt standardmäßig auf 8x1024 festgesetzt.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz