Sound-Ausgabe



  • Hallo,

    ich bin auf der Suche, mittels C/C++ ein Audiosignal auszugeben. Sprich, ich habe rohe Audiodaten (nennt sich doch PCM, oder?) und möchte diese ausgeben. Weiß jemand ein paar Tutorials oder Anlaufstellen für Informationen?

    Vielen Dank im Voraus!



  • Ich benutze PortAudio.
    In der Wiki gibt es ein Tutorial.



  • Unter Linux kannst du ALSA benutzen. Das wäre dann die direkte Hardware-Schnittstelle.

    Homepage: http://www.alsa-project.org/
    Howto: http://www.suse.de/~mana/alsa090_howto.html

    Unter den meisten andern Unix-artigen Systemen reicht es schon die daten in das Gerät /dev/dsp zu schreiben.

    http://de.wikipedia.org/wiki/Open_Sound_System



  • Erstmal vielen Dank für die Antworten, im ALSA-Howto verwundert mich jedoch, dass ich "periods" festlegen muss. So weit ich das verstehe, entspricht "periods" der Anzahl der Schwingungen während einer bestimmten Zeitspanne (wodurch sich eine feste Frequenz ergibt). Wenn ich jedoch rohe PCM-Daten habe, bringt mir das nicht viel, oder? Verstehe ich etwas falsch?



  • the[V]oid schrieb:

    Erstmal vielen Dank für die Antworten, im ALSA-Howto verwundert mich jedoch, dass ich "periods" festlegen muss. So weit ich das verstehe, entspricht "periods" der Anzahl der Schwingungen während einer bestimmten Zeitspanne (wodurch sich eine feste Frequenz ergibt). Wenn ich jedoch rohe PCM-Daten habe, bringt mir das nicht viel, oder? Verstehe ich etwas falsch?

    Ja... Damit ist die Frequenz gemeint, in der die Daten gelesen werden, nicht die Frequenz der Schwingungen.



  • Also die Abtastrate mit der die Rekonstruktion erfolgt?



  • the[V]oid schrieb:

    Also die Abtastrate mit der die Rekonstruktion erfolgt?

    Wahrscheinlich auch nicht ganz. Ist schon länger her, dass ich mich mit dem Howto da auseinander gesetzt hab. Beachte folgenden Kommentar

    Howto schrieb:

    /* Set number of periods. Periods used to be called fragments. */

    Das Beispiel in dem Howto benutzt schon PCM-Daten. Die werden aber generiert. Da ist irgendwo eine stellt, wo die PCM-Daten der Sound-Karte übergeben werden, davor wird ein Sägezahn-Muster in einen Puffer geschrieben und dann übergeben.



  • Wenn dir ALSA zu kompliziert ist (ich mag es auch nicht) benutz das Open Sound System. Das ist (besonders für POSIX-Kenner) recht einfach zu benutzen.
    Ansonsten ist PortAudio auch ganz schön, wenn man Callbacks mag. Gibt auch C++ Bindings.



  • OSS ist seit Jahren deprecated. Zu Recht.



  • nman schrieb:

    Zu Recht.

    Deiner Meinung nach. 🙄

    Mal ehrlich: Die ALSA API ist doch totaler Murks. Viel zu kompliziert. Und warum haben die nicht einfach das bewährte Konzept, normale POSIX Funktionen (open, write, close) zur Steuerung zu benutzen, beibehalten? Außerdem bist du mit ALSA auf Linux beschränkt, während das Open Sound System auf vielen UNIXen verfügbar ist.



  • OSS ist einfach unheimlich primitiv, kein Wunder, dass das API schön simpel ist.

    Für portable Software würde ich weder ALSA noch OSS verwenden, sondern irgendwas, was auf einem höheren Level arbeitet. Darum ist mir das ALSA-API auch egal - sowas verwendet man sinnvollerweise ohnehin nicht direkt.


Anmelden zum Antworten