Re: Wav loop point support

"[email protected]" <[email protected]>
Newsgroups gmane.comp.lib.openal
Message-ID <[email protected]>
Now I'm a bit overwhelmed to be honest. This is an entirely different 
idea for me and offers new solutions for such problems with OpenAL.

I think this is based on a misunderstanding in the first place.

I attached now a wav file (I hope I can attach it here)which does have a 
loop point.
Edit: sent as attachment doesn't seem to work, so here is a screenshot 
and the .wav file:
www.oldunreal.com/temp/loop-point.jpg
www.oldunreal.com/temp/sample.wav

It can be specified with a tool like Soundforge or with the free 
Wavosaur. It specifies a part of a wav file which is looped until the 
playback is effectively stopped.

But this is maybe still the solution (and maybe an even better in the end)

For the looping API- which can be very useful in any case-

I'd personally prefer

alSourcei(sID, AL_LOOP_START, startpoint);
alSourcei(sID, AL_LOOP_END, endpoint);

aside this everything else you said makes perfectly sense to use it in 
any way needed. Also if I find a way to read out such loop points from a 
.wav file then it can be used easily for that purpose too.

~Jochen


On 06.05.2010 15:08, Chris Robinson wrote:
> On Thursday 06 May 2010 3:54:09 am [email protected] wrote:
>
>> I put this into the discussion a while ago already, but somehow it got
>> lost. The last answer I got was that it shouldn't be to difficult to
>> implement it. But at the moment I have no idea where to start. Maybe
>> someone can give me a hint, so I could try it myself, since this would be
>> quite useful for me.
>>
> We'd first need to decide on an API to specify the loop points, and define the
> behavior. Something like:
>
> alSourcei(sID, AL_LOOP_START, startpoint);
> alSourcei(sID, AL_LOOP_END, endpoint);
> // or
> ALint points[2] = { startpoint, endpoint };
> alSourceiv(sID, AL_LOOP_POINTS, points);
>
> where the points are specified in (compressed) byte offsets; in other words,
> in relation to the size given to alBufferData. I considered sample offsets,
> but that may be difficult given that OpenAL can resample audio when loading
> it.
>
> If looping is off, or if the end point is effectively<= the start point, the
> points are ignored (doesn't loop or loops over the whole queue, respectively).
> Otherwise, when playback of the source reaches the end point, it loops back to
> the start point. If the current byte offset is before the start point, it will
> continue to play from its current position (it's not forced forward into the
> loop range). If the source offset is set to the end point or beyond, however,
> it would effectively become:
>
> newoffset = ((offset-startpoint)%(endpoint-startpoint)) + startpoint
>
> This would allow a looping source to have a lead-in before getting into the
> loop. Turning off looping while the source is playing would let it finish its
> current iteration before playing through a lead-out and stopping.
>
> The loop points are also implicitly clamped to 0 and the total size of the
> buffer queue. For instance, setting the loop start to MIN_INT and loop end to
> MAX_INT would make the source loop normally over all the buffers.. although
> querying the points would still give you back MIN_INT and MAX_INT.
>
> Additionally for buffer queues, if the start point is past the end of one or
> more buffers, those buffers will NOT be marked processed when they finish
> playing.
>
> Any thoughts or comments?
> _______________________________________________
> Openal mailing list
> [email protected]
> http://opensource.creative.com/mailman/listinfo/openal
>
>


_______________________________________________
Openal mailing list
[email protected]
http://opensource.creative.com/mailman/listinfo/openal
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.