Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Klingt nach ernsthafter Konkurrenz für FMOD. Bitte noch Pulseaudio-Ausgabe hinzufügen - viele weitverbreitete Linux-Distributionen (Fedora, Ubuntu u.m.) setzen darauf, daher wäre eine saubere Schnittstelle zu PA schon gut. Vorallem gibt es nicht so viele, die das gut machen. Aber ich bin gespannt wies weiter geht .... Auf jeden Fall vielversprechend!
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Klingt wirklich gut - und vorallem nützlich!
Du solltest in der Projektbeschreibung nochmal auf die zugrundeliegende Plattform hinweisen. Soweit ich das verstanden habe geht es hier um Pascal. Das ist bei DGL aber nicht mehr selbstverständlich.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Jun 28, 2007 17:58 Beiträge: 193
Programmiersprache: Pascal, C
Hallo,
danke für die Antworten.
@Lord Horazont: Kein Problem, ich füge es in die ToDo-Liste ein. Die Anforderungen, die ich an die Ausgabe-API stelle sind eigentlich relativ gering: Ich muss nur ein Ausgabegerät öffnen können (am Besten mit Mehrkanalton) und Daten daran streamen können. Alles weitere erledigt meine Bibliothek.
Das klingt echt verdammt gut! Weiter so, ich bin echt gespannt wie ein Flitzebogen.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich empfehle dir die Idee mit Alsa support zu verwerfen und auf PulseAudio zu setzen. Alsa war das alte Sound System und wird seit ner weile durch PulseAudio ersetzt. So ist bei Fedora z.B. schon seit Version 10 default PulseAudio installiert und Alsa muss nach installiert werden. PulseAudio ist noch hier und da ein bischen wakelig aber funktioniert mitlerweile auf den meisten Systemen besser und mit mehr Funktionalität. Solltest du dann mit einer Linuxunterstützung anfangen, dann wäre es Ratsamer gleich auf PA zu setzen, da Alsa deprecated ist.
Das Projekt sieht gut aus aber wie es damit programmieren lässt, werde ich nicht erfahren :\ (C++ Programmierer).
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Jun 28, 2007 17:58 Beiträge: 193
Programmiersprache: Pascal, C
Danke für den Hinweis, dann werde ich stattdessen PulseAudio verwenden
Zunächst möchte ich allerdings libao testen, welche ein sehr kompaktes API bereitstellt - vielleicht funktioniert das so gut, dass ich auf Systemspezifische Bindings verzichten kann.
Nutze BEIDES! PulseAudio ist noch LANGE davon entfernt eine uneingeschränkt gute Lösung zu sein. Ich habe es bei mir z.B. runterschmeißen müssen, da es eklatante Probleme gab. Davon abgesehen, dachte ich immer, dass PulseAudio eine Art emuliertes ALSA mitbringt (oder so).
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Pulseaudio ist ein Client-Serverbasiertes Netzwerkprotokoll, welches die Audiodaten in Form von TCP/IP übermittelt. Aufgrund von den Loopbackadapter geht das nahezu ohne verlust und erlaubt dazu noch viele coole features, wie SoundServer,Netzwerk Streaming und so weiter. Da ist allerdings auch der Fehlerteufel begraben, denn es muss jede Deviceanfrage von extern über den Daemon gesynct versendet werden. Mit Fedora11 hat man PA soweit korrigiert und stabilisiert, dass es nun so ziemlich bugfrei ist und auf den wenigstens Hardwaresystemen noch probleme hat. Leider sind die Bibliotheken wie gstreamer, ffmpeg und co nich so flink und man findet jetzte noch Bugs im Tracker wie gstreamer stellt global Volume sporadisch bis auf 0% runter. Totem, Rhythmbox und wie die ganze Software heisst basiert auf diesen Libs und damit gibt es schon mal Fehler aber die haben dann sehr selten noch mit PA zu tun. PA hat default ein ALSA emulator mit als package installiert(fedora distros zumindestens) und somit laufen alle ALSA Programme ebenfalls. Seit PA gibt kann ich nun endlich Mumble, Musik, Flash und andere Soundquellen für Audio Ein- und Ausgang überhaupt gleichzeitig nutzen. Selbst Wine läuft dank PA endlich Problemlos
Der größte Vorteil an PA ist, dass man nur noch eine Audiobibliothek benötigt, da diese unter allen bekannten unix/linux und windows OS läuft(wie sdl,openal,libao). Ein weiterer Vorteil ist die API von PA, ein Grund für das weg gehen von ALSA war, weil die API so umständlig und groß ist, dass ständig Fehler in Software entstehen, die Alsa nutzen. Ein Mumble/Ventrilo,/Teamspeak mit PA zu schreiben beläuft sich in Rahmen von 200-300 Zeilen Code, wovon locker 90% Logik und GUI sind. PA baut aktuell noch intern auf ein Minimalistisches Alsa und/oder OSS auf und bietet nach außen eine schlanke einfache API.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Das es PulseAudio gibt habe ich noch garnicht mitbekommen. Bin noch auf dem Stand OSS ist deprecated und ALSA ist state-of-the-art. Bei mir läuft alles mit ALSA und auch parallel. Nur das Flash Plugin stolpert oft nach einiger Zeit. (Wine läuft auch - wenn das Sequenzer Modul geladen ist) Ich sehe das also so wie Ziz. Gib den Leuten erst mal Zeit sich mit PulseAudio auseinanderzusetzen. Hätte mich voll erwischt, wenn du kein ALSA unterstützt Werde bei Zeiten aber mal gucken ob ich umsatteln sollte oder ich mir damit nur einen unnötigen Wrapper um ALSA einhandele.
Eine schöne Bibliothek hast du da gemacht Vielleicht kannst du mir sagen ob sie für mein Projekt geeignet ist oder nicht, ich möchte eine Art digitale Lichtorgel programmieren. Ganz einfach gesagt, wenn der Computer grade einen Bass abspielt brauche ich eine Meldung die ich weiter verarbeiten kann. Gibt es in der Bibliothek etwas was ich dafür benutzen könnte ?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Dafür wird es am besten sein, wenn du dir die Werte einer Fourier-Transformation (s. Fourieranalyse) schnappst. Diese wird ja von Audorra auch unterstützt, das heißt, du musst die Berechnung nicht einmal selbst durchführen. Du schaust einfach, ob in dem entsprechenden Tonfrequenzband ein entsprechender Ausschlag ist und schon kannst du feststellen, ob ein Basston vorliegt.
Viel Erfolg
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Denk mal darüber nach, ob du deine cdda-Pfadangabe nicht eher noch einmal anpassen willst, um zwischen Windows und Linux möglichst wenig unterschiede zu haben. Denn der Pfad zu einem Laufwerk unter Linux ist ja meistens Länger als nur ein Schritt, es könnte also auch mal cdda:///dev/cdrom0 rauskommen. Einfacher wäre es dann, die Tracknummer z.B. mit ? abzuspalten (um im URL-Stil zu bleiben).
Übrigens finde ich es reichlich schwer, Audorra unter Linux mit FPC zum kompilieren zu bekommen. An vielen Stellen machst du Sachen, die der FPC nicht wegsteckt oder die unter 64-bit ungültig sind. Wenn du Objekte oder Pointer auf Zahlen casten willst, nutze dafür bitte ptrint. Der passt sich der Pointergröße auf dem jeweiligen System an. Auch finde ich keine lib für Acinerella, welches man für die eine Demo ja unbedingt braucht.
Auch wäre es schön, wenn du die einzelnen Audorra-Units irgendwie kennzeichnen würdest, was unbedingt laufen muss, damit Audorra läuft und was nur „schmückendes Beiwerk“ ist. Vielleicht Au*.pas vs. AuX*.pas oder sowas.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Jun 28, 2007 17:58 Beiträge: 193
Programmiersprache: Pascal, C
Hi,
erstmal Danke für die Antworten.
abu hat geschrieben:
Vielleicht kannst du mir sagen ob sie für mein Projekt geeignet ist...
Ja, das geht damit ohne Probleme. Einfach die FFT-Analyse einbinden und in einem Timer die Frequenzbänder überprüfen.
Lord Horazont hat geschrieben:
Übrigens finde ich es reichlich schwer, Audorra unter Linux mit FPC zum kompilieren zu bekommen.
Hm... Unter 32-Bit Linux läuft es bei mir ohne Probleme - ich habe es einfach aus dem SVN geholt und es lief auf anhieb... Wie es mit 64-Bit aussieht habe ich leider - mangels istalliertem 64-Bit Betriebsystem - nicht sagen. Da wäre ich recht froh, wenn mir jemand helfen könnte.
Lord Horazont hat geschrieben:
Auch finde ich keine lib für Acinerella, welches man für die eine Demo ja unbedingt braucht.
acinerella.sf.net -> Herunterladen (aus dem CVS-Archiv) -> Compilieren -> fertig Wird aber für die Demo nicht unbedingt gebraucht - stattdessen kann man auch einfach AuWAV einbinden. Dann kann man halt nur WAV-Dateien wiedergeben.
Lord Horazont hat geschrieben:
Auch wäre es schön, wenn du die einzelnen Audorra-Units irgendwie kennzeichnen würdest, was unbedingt laufen muss, damit Audorra läuft und was nur „schmückendes Beiwerk“ ist. Vielleicht Au*.pas vs. AuX*.pas oder sowas.
Alles in den Unterordnern "src/drivers", "src/protocols" und "src/decoders" ist optional. Der (überwiegende) Teil der Units im Stammverzeichnis wird auf jeden Fall benötigt.
Lord Horazont hat geschrieben:
Denk mal darüber nach, ob du deine cdda-Pfadangabe nicht eher noch einmal anpassen willst, um zwischen Windows und Linux möglichst wenig unterschiede zu haben. Denn der Pfad zu einem Laufwerk unter Linux ist ja meistens Länger als nur ein Schritt, es könnte also auch mal cdda:///dev/cdrom0 rauskommen. Einfacher wäre es dann, die Tracknummer z.B. mit ? abzuspalten (um im URL-Stil zu bleiben).
Ja, das stimmt, daran habe ich irgendwie nicht mehr gedacht. Der neue Stil ist nun:
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Das track= kannste dir theoretisch sogar auch noch sparen
Achja, genau, CVS, da hat das holen nicht (richtig) funktioniert. Ich habe nach der Anleitung auf SF als Modulname einfach mal acinerella angegeben. Er hat auch was runtergeladen. Dann hab ich versucht, in dem src-Verzeichnis make aufzurufen und wurde mit Fehlern bombardiert (größtenteils dinge, die fehlten oder nicht richtig deklariert waren).
Hm. Ich habe natürlich einfach pauschal versucht *alle* Units zu kompilieren (außer die Windows-Abhängigen) und nicht nur die, die für das Sample gebraucht werden. Die mpg123 z.B. ist nicht kompilierfähig, weil du eine Zuweisung ala: prozedurpointer := GetProcAdress machst. Das geht nicht gut, weil der Prozedurpointer typisiert ist, der Rückgabewert von GetProcAdress allerdings nicht. Da hilft es, den Prozedurpointer vorher auf Pointer zu casten:
Code:
Pointer(prozedurpointer):= GetProcAddress({...});
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.