Krautkanal.com

Veröffentlicht am 2016-10-27 01:38:40 in /prog/

/prog/ 9361: [c++] Gute Audiobibliotheken?

creartinc Avatar
creartinc:#9361

Hallo Bernd!

Habe bisher noch nie was mit Audio gemacht und würde da gern was tun. Zunächst erstmal nur ein kleines Programm, welches eine Datei einliest und als sound wiedergibt.

ogg-vorbis lib gibt es bei http://www.vorbis.com/, damit lassen sich dann schonmal oggs einlesen.

Nur wie kriege ich die auf die Soundkarte?

Habe mich mal umgesehen nach audiolibs, das Angebot ist eher flau, besonders was kompabilität mit win und unix angeht.

Dachte zuerst an OpenAL, aber das Projekt ist mittlerweile tot.

Kann mir ein Bernd eine gute, kostenfreie Audiolib für c++ empfehlen?

mfacchinello Avatar
mfacchinello:#9362

Ich denke OpenAL ist immer noch der Weg zu gehen. Ansonsten kannst du mal gucken ob SDL noch zuckt.

http://www.openal-soft.org/

garethbjenkins Avatar
garethbjenkins:#9363

>>9361
Die Audiobibliothek von SFML.

xarax Avatar
xarax:#9364

>>9361
KFR
Von dieser Liste: http://de.cppreference.com/w/cpp/links/libs

Bernd Avatar
Bernd:#9365

>>9361
>Habe mich mal umgesehen nach audiolibs, das Angebot ist eher flau,
Das glaubt Bernd eher nicht, es gibt da schon ne Menge an Zeugs.


>Dachte zuerst an OpenAL, aber das Projekt ist mittlerweile tot.
Das ist schon richtig.

rahmeen Avatar
rahmeen:#9373

Ich würde zu PortAudio oder rtAudio greifen.

>>Das glaubt Bernd eher nicht, es gibt da schon ne Menge an Zeugs.

Naja, bei OPs Anforderung: "unter fenster und pinguin" und noch dazu kostenbefreit, da wird das Angebot schon etwas knapp.

joki4 Avatar
joki4:#9391

Bernd hat immer auf Kommandozeile geprökelt. ogg123, timidity und so können ja in Datei schreiben.

Wenn er meer brauchte hat er sox(1) benutzt. Die Syntax ist allerdings noch perverser als unter Lunix sowieso üblich.

jqueryalmeida Avatar
jqueryalmeida:#9401

Stimme >>9362 zu, SDL-Link ist www.libsdl.org (SDT heißt Simple Direct Layer). "Tot" kann auch stable und bewährt sein. Wenn die Treiberinfrastruktur darunter sich nicht ändert braucht man keinen neuen Release.

tusharvikky Avatar
tusharvikky:#9448

OP, wenn ich dein Bildchen anschaue, dann willst du in Richtung Softwaresynthesizer, Effekte, DAW usw. gehen? Da kann ich nur

https://github.com/julianstorer/JUCE/
https://www.juce.com

Empfehlen. Zl;ng: Es ist eine Bibliothek, die kreuzplattform läuft (Win, OSX, Linux, Android) und dabei sowohl was die eigentliche Signalverarbeitung (Generatoren, Filter, Mixer usw.), Schnittstellen zu Klangkarten, Datei- Ein/Ausgabe einiges bereitstellt, gleichzeitig aber auch noch GUI-Elemente für dort typische gebrauchte Sachen (wie eben ein Dings um eine ADSR-Hüllkurve zu bedienen). Man kann damit sowohl Reinstecks (VST(win, mac), AU(mac), ladspa(linux), lv2(linux)) bauen als auch Gastgeber dafür. Es kann auf allen Plattformen die Klangein/ausgabe mit niedriger Latenz nutzen. Es sind ziemlich viele, auch kommerzielle Sachen, damit gemacht worden. Es ist immer noch offene Kwelle, allerdings braucht man zur kommerziellen Nutzung eine Kauflizenz.
Bernd hat damit vor Jahren mal etwas als studentisches Projekt machen müssen und war ziemlich beeindruckt (es gab damals so einen Zauberer, der das Grundgerüst für ein Reinsteck generierte, man musste dann "nur" noch die eigentliche Signalverarbeitung sowie die Steuerelemente fürs GUI implementieren.

Wenn du abseits von dieser Hauptstromart (fette Libs plus herkömmlichem C++ fürs Klangrechnen) gehen willst, solltest du noch speziell für Musik/Klang geschriebene Sprachen/Rahmenwerke anschauen. Da wären:
pure data: http://puredata.info/ Da klickt man sich Graphen zusammen, die jeweils ein Ding (bswp. einen Oszillator, eine WAV-Datei, ...), kann die Blöcke selbst aber auch erweitern. Und man kann das Ganze mit libpd auch komplett ohne GUI auch auf einer Himbeere oder einem Android-Telefon laufen lassen.
supercollider: https://supercollider.github.io/ ist ähnlich, aber nicht als graphische Umgebung, sondern als eigene (funktionelle) Sprache speziell für Musikanwendungen gemacht. Das nette ist, dass es (wie bei pd übrigens auch) schon tausende fertige Blöcke gibt und das GUI komplett getrennt vom eigentlichen Klangservierer ist.

Diese beiden Dinger sind eigentlich eher zuhause bei den Fricklern, die irgendwelche Ambient/Noise-Musik machen, aber es hat auch schon jemand mit supercollider eine komplette DAW zusammengebastelt:
http://cdm.link/2016/04/a-totally-free-daw-and-live-environment-built-in-supercollider-lnx_studio/
http://lnxstudio.sourceforge.net/

danro Avatar
danro:#9494

>>9361
GStreamer wäre ein bisschen weiter weg von der Hartware.

Allerdings ist dein Beispiel damit trivial.

Neuste Fäden in diesem Brett: