Re: [LAD] mixing while using libao and libsndfile
On Tue, 17 May 2016 08:26:17 +, David Griffith wrote: > On Tue, 17 May 2016, Andrea Del Signore wrote: > >> On Tue, May 17, 2016 at 12:25 AM, David Griffith >>wrote: >> On Mon, 16 May 2016, Andrea Del Signore wrote: >> >> > I'm not simply trying to mix two files. My main project is a game >> > engine in which two sounds are allowed at any one time. For instance, >> > there can be constant background music punctuated by sound effects. >> > I can't get these to mix correctly. >> >> Hi, >> >> in that case you can just skip the right number of frames before >> starting playing sounds. >> >> I modified my code to take the start time for each file and schedule >> the play time with frame accuracy. >> >> http://pastebin.com/0PMyfPvK >> >> If you want your timing to be sample accurate the algorithm is a bit >> more complex. > > That won't work. Your code schedules things ahead of time before > anything else happens. I need to be able to fire off sound effects the > instant the player does something to cause them. I can't know in > advance. Hi, another code iteraction: http://pastebin.com/v8gTWBtJ This is a basic implementation, there is a lot of things left todo (RT safeness as Paul already noted, code cleanup, etc...) HTH, Andrea P.S. I don't code in C very often, may be this is my first time in 6 or 7 years. For me this code snippet is just an excuse to do some exercise :) ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] mixing while using libao and libsndfile
Your design is way too simple and fundamentally wrong. If you want low latency you need to use a pull model (aka callback model) for audio i/o to the device. Let the device tell you when it wants audio data, and deliver it,on time, without blocking (which means no on-demand file i/o in the same thread as the device audio i/o). See http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing On Tue, May 17, 2016 at 4:26 AM, David Griffithwrote: > On Tue, 17 May 2016, Andrea Del Signore wrote: > > On Tue, May 17, 2016 at 12:25 AM, David Griffith wrote: >> On Mon, 16 May 2016, Andrea Del Signore wrote: >> >> > I'm not simply trying to mix two files. My main project is a >> > game engine in which two sounds are allowed at any one time. >> > For instance, there can be constant background music punctuated >> > by sound effects. I can't get these to mix correctly. >> >> Hi, >> >> in that case you can just skip the right number of frames before starting >> playing sounds. >> >> I modified my code to take the start time for each file and schedule the >> play time with frame accuracy. >> >> http://pastebin.com/0PMyfPvK >> >> If you want your timing to be sample accurate the algorithm is a bit more >> complex. >> > > That won't work. Your code schedules things ahead of time before anything > else happens. I need to be able to fire off sound effects the instant the > player does something to cause them. I can't know in advance. > > -- > David Griffith > d...@661.org > ___ > Linux-audio-dev mailing list > Linux-audio-dev@lists.linuxaudio.org > http://lists.linuxaudio.org/listinfo/linux-audio-dev > > ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] mixing while using libao and libsndfile
On Tue, May 17, 2016 at 10:26 AM, David Griffithwrote: > On Tue, 17 May 2016, Andrea Del Signore wrote: > > On Tue, May 17, 2016 at 12:25 AM, David Griffith wrote: >> On Mon, 16 May 2016, Andrea Del Signore wrote: >> >> > I'm not simply trying to mix two files. My main project is a >> > game engine in which two sounds are allowed at any one time. >> > For instance, there can be constant background music punctuated >> > by sound effects. I can't get these to mix correctly. >> >> Hi, >> >> in that case you can just skip the right number of frames before starting >> playing sounds. >> >> I modified my code to take the start time for each file and schedule the >> play time with frame accuracy. >> >> http://pastebin.com/0PMyfPvK >> >> If you want your timing to be sample accurate the algorithm is a bit more >> complex. >> > > That won't work. Your code schedules things ahead of time before anything > else happens. I need to be able to fire off sound effects the instant the > player does something to cause them. I can't know in advance. > > -- > David Griffith > d...@661.org Yes my code for now implements only your initial request (play 2 sounds spaced by few seconds), and it shows how to schedule N sound files of different length at different times. I'll try to write a simple mixer for my next learning exercise :) Have a good day, Andrea ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] mixing while using libao and libsndfile
On Tue, 17 May 2016, Andrea Del Signore wrote: On Tue, May 17, 2016 at 12:25 AM, David Griffithwrote: On Mon, 16 May 2016, Andrea Del Signore wrote: > I'm not simply trying to mix two files. My main project is a > game engine in which two sounds are allowed at any one time. > For instance, there can be constant background music punctuated > by sound effects. I can't get these to mix correctly. Hi, in that case you can just skip the right number of frames before starting playing sounds. I modified my code to take the start time for each file and schedule the play time with frame accuracy. http://pastebin.com/0PMyfPvK If you want your timing to be sample accurate the algorithm is a bit more complex. That won't work. Your code schedules things ahead of time before anything else happens. I need to be able to fire off sound effects the instant the player does something to cause them. I can't know in advance. -- David Griffith d...@661.org___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev