[C/C++] Geluid afspelen in Linux

Pagina: 1
Acties:

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 04-05 11:40
Hoi,

Ik ben bezig met een C++ proggie voor Linux, waarbij ik een nette waarschuwing af wil geven met geluid. Echter kom ik niet verder dan de onelegante oplossing van een system call naar play of cat. Dit is mede een gevolg van het feit dat ik een flinke n00b ben in een Linux omgeving.
Mijn onelegante oplossing stuit op twee problemen (euhhhh uitdagingen bedoel ik).

-Door een system call aan te roepen wacht mijn programma tot het volledige geluidsbestand (wave formaat) is afgespeeld, terwijl ik eigenlijk wil dat deze door runt.

Ik heb al gedacht hierbij aan programma's die het bufferen overnemen als ESD, maar eigenlijk moet het programma kunnen draaien op elke basic Linux machine zonder extra installs.

-Als de geluidskaart gebruikt wordt door een ander programma wordt er een lelijke foutmelding afgedrukt en wordt geen geluid afgespeeld. Ik heb echter geen nette manier kunnen vinden om te checken of de geluidskaart in gebruik is (met een C++ functie) en/of het lopende proces te killen.

Als iemand me een beetje op weg kan helpen hoor ik het graag.

.


  • rb338
  • Registratie: Januari 2001
  • Laatst online: 04-03 19:38
Waarom kijk je niet even naar OSS (of liever, ALSA)?
Ik ben dan geen Linux developer, maar als ik er zo over nadenk neem ik aan dat iedereen die geluid in Linux heeft toch tenminste OSS heeft (of ALSA, al dan niet met OSS emulatie). Dus de meeste mensen zullen geen last van extra installs hebben.

Wat betreft meerdere geluiden door elkaar: volgens mij zorgen soundservers als ESD ervoor dat er meerdere geluiden tegelijk afgespeeld kunnen worden. Kan ook zijn dat ALSA dit in z'n uppie kan, durf ik niet te zeggen.

Maar wellicht zit er hier wel iemand die je meer kan vertellen (ik noem een beelzebubu)

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 04-05 11:40
Tja ik zit hier in een computerzaal en al deze machines hebben al geen ALSA. Natuurlijk zijn dit ook wel hele kale installs. Dit is behalve waanzinnig irritant voor mij een duidelijke reden om het zonder ALSA of ESD voor elkaar te krijgen.

.


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Kijk even naar libao.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02-05 01:32
Het simpelste is gewoon je samples naar /dev/pcm sturen, maar dat werkt juist slecht samen met sound daemons als esd en artsd. Voor een completere oplossing kun je kijken naar sound libraries als SDL...

edit:
libao is waarschijnlijk een beter idee nog. ;)

[ Voor 15% gewijzigd door Soultaker op 02-06-2005 14:42 ]


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Via google kan je vrij eenvoudig een tutorial voor alsa vinden waarin een pcm file wordt afgespeeld, opgenomen, etc. Tenminste, dat heb ik ooit wel gevonden, maar weet de link niet meer. Iig, dat stukje code heb ik eens uitgeprobeerd en heb het ding gevoed met een data sectie uit een .wav bestand (wat pcm zou moeten zijn). Laat ik het zo zeggen... het geluid leek er wel op, maar naast een heleboel gekraak denk ik ook dat een aantal andere parameters als afspeelsnelheid enzo niet kloppen...

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]

Pagina: 1