[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-audio-dev
Subject: Re: [LAD] mixing music and sound effects using libao
From: dave () 661 ! org
Date: 2015-04-30 22:17:57
Message-ID: alpine.DEB.2.02.1504302214110.3657 () nyx ! feedle ! net
[Download RAW message or body]
On Thu, 30 Apr 2015, Hermann Meyer wrote:
> Am 30.04.2015 um 10:41 schrieb dave@661.org:
>>
>> 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.
--
David Griffith
dave@661.org
A: Because it fouls the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic