Am 01.05.2015 um 00:17 schrieb [email protected]:
On Thu, 30 Apr 2015, Hermann Meyer wrote:

Am 30.04.2015 um 10:41 schrieb [email protected]:

I've been playing around with libsndfile, libvorbisfile, libmodplug, and libao to provide background music and sound effects for a game engine. I have a solid handle on making one noise at a time, but I don't understand mixing. At first I thought I would have to write my own mixer and handle the channels, sample rate, and sample size issues myself. I really don't want to have to do that. Then I noticed in the libao documentation that nothing says that I cannot spawn two threads, each of which calls ao_open_live() and ao_play() on different sound files. Indeed, the docs for ao_initialize() seem to suggest this can be done with the statement that it be called in the main thread.

I tried this and it works so erratically that I'm not sure libao was written with this in mind. I get these results in order of likelihood:

1) "Segmentation fault"

2) "*** glibc detected *** ./threadtest7: malloc(): memory corruption
    (fast): 0x0000000001bc5390 *** Bus error"

3) "*** glibc detected *** ./threadtest7: double free or corruption (out):
    0x00000000018ba2e0 ***"

4) A bit of the first file, then the second file.

5) Only the second file.

6) Both files messily mixed with a zipping noise. (very rare)

Is libao in fact intentionally capable of doing this? If not, what are my options for mixing music and sound effects? I really don't want to use SDL_mixer for a variety of reasons, chiefly because my program is terminal-only. Virtual beer if you can guess what the program is.

Hi

It seems libao is able to do this. Attached is the example code from the libao side, roughly hacked in a second thread to play to signals simultaneous. Works stable here.

This has trouble opening the second device:

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Error opening device2.

I'm using Debian Wheezy amd64 without Pulseaudio. Maybe Debian's default setup for ALSA is wrong? There are no /etc/asound.conf or ~/.asoundrc files.


Well, here is debian/sid with pulse/jack running. Indeed, it didn't work with plain ALSA, . .
_______________________________________________
Linux-audio-dev mailing list
[email protected]
http://lists.linuxaudio.org/listinfo/linux-audio-dev

Reply via email to